Error when reading from pre-populated SQLite database in Ionic project

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Error when reading from pre-populated SQLite database in Ionic project

Robert Helmick
I'm receiving an error when I try to read from a pre-populated SQLite
database: `sqlite3_prepare_v2 failure: no such table 'plant'`

From what I understand SQLite looks for the mydb.db file in the /www folder
by default, then creates an empty database when it doesn't find the
pre-populated mydb.db file. This is why it can't find the 'plant' table,
because the newly created blank database obviously doesn't contain a
'plant' table. However I can confirm that the database *is* in the /www
folder, and that it contains the 'plant' table when I run `sqlite3 mydb.db`
then `.tables` in the terminal.

I can't figure out why it's not reading from the pre-populated mydb.db file.

Folder structure (from root):

    /src
    -/app
    --/app.component.ts
    /www
    -/mydb.db

app.component.ts:

      constructor(public platform: Platform, private sqlite: SQLite ) {
        platform.ready().then(() => {
          this.getData();
        });
      }

      getData() {
        this.sqlite.create({
          name: 'mydb.db',
          location: 'default'
        }).then((db: SQLiteObject) => {
          db.executeSql('SELECT * FROM plant ORDER BY id ASC', [])
          .then(res => {
            // Do Stuff
          }).catch(e => console.log("FAIL executeSql:", e));
        })
      }

I've attempted many fixes that I've found on StackOverflow, like wiping the
app from my device, starting a new ionic project then copying app and
config files over, and setting a direct path in the database location, but
it still keeps trying to read from the empty database that it creates..

Thanks in advance for any help.

Robert
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Error when reading from pre-populated SQLite database in Ionic project

Chris Locke-3
When SQLite creates an empty .db file, which directory is it in?  With all
your tweaking, etc, is the new database always in the same directory?

Thanks,
Chris

On Wed, Sep 5, 2018 at 3:23 PM Robert Helmick <[hidden email]>
wrote:

> I'm receiving an error when I try to read from a pre-populated SQLite
> database: `sqlite3_prepare_v2 failure: no such table 'plant'`
>
> From what I understand SQLite looks for the mydb.db file in the /www folder
> by default, then creates an empty database when it doesn't find the
> pre-populated mydb.db file. This is why it can't find the 'plant' table,
> because the newly created blank database obviously doesn't contain a
> 'plant' table. However I can confirm that the database *is* in the /www
> folder, and that it contains the 'plant' table when I run `sqlite3 mydb.db`
> then `.tables` in the terminal.
>
> I can't figure out why it's not reading from the pre-populated mydb.db
> file.
>
> Folder structure (from root):
>
>     /src
>     -/app
>     --/app.component.ts
>     /www
>     -/mydb.db
>
> app.component.ts:
>
>       constructor(public platform: Platform, private sqlite: SQLite ) {
>         platform.ready().then(() => {
>           this.getData();
>         });
>       }
>
>       getData() {
>         this.sqlite.create({
>           name: 'mydb.db',
>           location: 'default'
>         }).then((db: SQLiteObject) => {
>           db.executeSql('SELECT * FROM plant ORDER BY id ASC', [])
>           .then(res => {
>             // Do Stuff
>           }).catch(e => console.log("FAIL executeSql:", e));
>         })
>       }
>
> I've attempted many fixes that I've found on StackOverflow, like wiping the
> app from my device, starting a new ionic project then copying app and
> config files over, and setting a direct path in the database location, but
> it still keeps trying to read from the empty database that it creates..
>
> Thanks in advance for any help.
>
> Robert
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Error when reading from pre-populated SQLite database in Ionic project

Chris Brody
Check the results of cordova plugin ls

A common pitfall is that you have to use cordova-sqlite-ext plugin to get
pre-populated database functionality. Commonly used cordova-sqlite-storage
plugin does not support this feature. Second pitfall is if you have
multiple Cordova sqlite plugins installed.

On Wed, Sep 5, 2018 at 12:25 PM Chris Locke <[hidden email]>
wrote:

> When SQLite creates an empty .db file, which directory is it in?  With all
> your tweaking, etc, is the new database always in the same directory?
>
> Thanks,
> Chris
>
> On Wed, Sep 5, 2018 at 3:23 PM Robert Helmick <[hidden email]
> >
> wrote:
>
> > I'm receiving an error when I try to read from a pre-populated SQLite
> > database: `sqlite3_prepare_v2 failure: no such table 'plant'`
> >
> > From what I understand SQLite looks for the mydb.db file in the /www
> folder
> > by default, then creates an empty database when it doesn't find the
> > pre-populated mydb.db file. This is why it can't find the 'plant' table,
> > because the newly created blank database obviously doesn't contain a
> > 'plant' table. However I can confirm that the database *is* in the /www
> > folder, and that it contains the 'plant' table when I run `sqlite3
> mydb.db`
> > then `.tables` in the terminal.
> >
> > I can't figure out why it's not reading from the pre-populated mydb.db
> > file.
> >
> > Folder structure (from root):
> >
> >     /src
> >     -/app
> >     --/app.component.ts
> >     /www
> >     -/mydb.db
> >
> > app.component.ts:
> >
> >       constructor(public platform: Platform, private sqlite: SQLite ) {
> >         platform.ready().then(() => {
> >           this.getData();
> >         });
> >       }
> >
> >       getData() {
> >         this.sqlite.create({
> >           name: 'mydb.db',
> >           location: 'default'
> >         }).then((db: SQLiteObject) => {
> >           db.executeSql('SELECT * FROM plant ORDER BY id ASC', [])
> >           .then(res => {
> >             // Do Stuff
> >           }).catch(e => console.log("FAIL executeSql:", e));
> >         })
> >       }
> >
> > I've attempted many fixes that I've found on StackOverflow, like wiping
> the
> > app from my device, starting a new ionic project then copying app and
> > config files over, and setting a direct path in the database location,
> but
> > it still keeps trying to read from the empty database that it creates..
> >
> > Thanks in advance for any help.
> >
> > Robert
> > _______________________________________________
> > sqlite-users mailing list
> > [hidden email]
> > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users