【发布时间】:2019-02-09 21:30:15
【问题描述】:
当我尝试从预填充的 SQLite 数据库中读取数据时收到错误消息:sqlite3_prepare_v2 failure: no such table 'plant'
据我了解,SQLite 默认在 /www 文件夹中查找 mydb.db 文件,然后在找不到预填充的 mydb.db 文件时创建一个空数据库。这就是它找不到“植物”表的原因,因为新创建的空白数据库显然不包含“植物”表。但是我可以确认数据库 是 在 /www 文件夹中,并且当我在终端中运行 sqlite3 mydb.db 然后 .tables 时它包含“植物”表。
我无法弄清楚为什么它没有从预先填充的 mydb.db 文件中读取。
文件夹结构(从根目录):
/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));
})
}
我尝试了许多在 StackOverflow 上找到的修复程序,例如从我的设备中擦除应用程序、启动一个新的 ionic 项目然后复制应用程序和配置文件,以及在数据库位置设置直接路径,但它仍然尝试从它创建的空数据库中读取数据。
【问题讨论】:
标签: android sqlite typescript ionic-framework