SQLite - openDatabase在4.0.3崩溃 - 没有这样的表android_metadata

时间:2015-03-14 09:13:20

标签: android-sqlite

我有一个使用预填充数据库的应用程序 - 按照此处的说明进行操作:

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

该应用程序在Android 4.1,4.3,5.0,5.1上正常运行 - 但是在4.0.3和4.0上它崩溃了

E/SqliteDatabaseCpp(551): SELECT locale FROM android_metadata failed
E/SQLiteDatabase(551): Failed to open the database. closing it.
E/SQLiteDatabase(551): android.database.sqlite.SQLiteException: no such table: android_metadata

我已经仔细检查了,并且根据文章在数据库上创建了元数据表。

错误来自:

myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

我已经阅读了类似的线程,如果他们没有创建android_metadata表,那么使用SQLiteDatabase.NO_LOCALIZED_COLLATORS可以解决这个错误。

我已尝试过上述相同的错误。

以下是代码片段:

private static String DB_PATH = "/data/data/org.example/databases/";
private static String DB_NAME = "model_paint_conversion.db";
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

还尝试删除路径 - 然后我在复制数据库时出错。

知道它在4.0和4.0.3上崩溃了什么但是在其他版本上工作了吗?

2 个答案:

答案 0 :(得分:0)

经过多次挖掘 - 查看复制到模拟器的db文件,发现元数据表确实丢失了。非常奇怪 - 我创造了它。

现在重新创建它并开始工作。

答案 1 :(得分:0)

使用SQLiteDatabase.NO_LOCALIZED_COLLATORS尝试SQLiteDatabase.OPEN_READONLY,并在清单中添加WRITE_SETTINGS的使用权限 我有同样的问题,我确实喜欢这个并为我工作......