一些Android设备报告(SQLite数据库的)表不存在

一些Android设备报告(SQLite数据库的)表不存在,android,sqlite,Android,Sqlite,我已经编写了一个Android应用程序,它使用SQLite数据库保存在assets文件夹中。 该数据库有4个表:“表1”、“表2”、“表3”和“android_元数据”。该应用程序在大多数设备上运行良好,但有报道称出现了一些崩溃。所以我使用acra(Android应用程序崩溃报告)来收集日志。 我确信数据库中有“table2”表,但是日志中说没有这样的表。我真的很想知道为什么它在一些设备上运行良好,但在其他一些设备上崩溃? 手机型号为三星GT-I9001GT,安卓2.3.3。一些HTC desi

我已经编写了一个Android应用程序,它使用SQLite数据库保存在assets文件夹中。 该数据库有4个表:“表1”、“表2”、“表3”和“android_元数据”。该应用程序在大多数设备上运行良好,但有报道称出现了一些崩溃。所以我使用acra(Android应用程序崩溃报告)来收集日志。 我确信数据库中有“table2”表,但是日志中说没有这样的表。我真的很想知道为什么它在一些设备上运行良好,但在其他一些设备上崩溃? 手机型号为三星GT-I9001GT,安卓2.3.3。一些HTC desire HD也有这个问题。 请帮我解决它。谢谢

(数据库文件大小为33KB) 日志

java.lang.RuntimeException:无法启动活动组件信息{english.idiom/english.idiom.Category2Activity}:android.database.sqlite.SQLiteException:没有这样的表:table2:,编译时:从table2中选择主题,table2\u id,其中table1\u id=8
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)上
在android.app.ActivityThread.access,售价1500美元(ActivityThread.java:117)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)上
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:123)
位于android.app.ActivityThread.main(ActivityThread.java:3687)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:507)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
在dalvik.system.NativeStart.main(本机方法)
原因:android.database.sqlite.SQLiteException:没有这样的表:table2:,编译时:从table2中选择主题,table2\u id,其中table1\u id=8
在android.database.sqlite.SQLiteCompiledSql.native\u compile(本机方法)中
位于android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
位于android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:65)
位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:83)
位于android.database.sqlite.SQLiteQuery(SQLiteQuery.java:49)
位于android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356)
位于android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1324)
位于english.idiom.Category2Activity.getContents(Category2Activity.java:176)
at english.idiom.Category2Activity.Initialize(Category2Activity.java:138)
位于english.idiom.Category2Activity.onCreate(Category2Activity.java:70)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)上
... 还有11个
android.database.sqlite.SQLiteException:没有这样的表:table2:,编译时:从table2中选择主题,table2\u id,其中table1\u id=8
在android.database.sqlite.SQLiteCompiledSql.native\u compile(本机方法)中
位于android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
位于android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:65)
位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:83)
位于android.database.sqlite.SQLiteQuery(SQLiteQuery.java:49)
位于android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356)
位于android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1324)
位于english.idiom.Category2Activity.getContents(Category2Activity.java:176)
at english.idiom.Category2Activity.Initialize(Category2Activity.java:138)
位于english.idiom.Category2Activity.onCreate(Category2Activity.java:70)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)上
在android.app.ActivityThread.access,售价1500美元(ActivityThread.java:117)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)上
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:123)
位于android.app.ActivityThread.main(ActivityThread.java:3687)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:507)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
在dalvik.system.NativeStart.main(本机方法)

您确实需要检查您愿意支持的设备。看

/data/ 
并检查是否有相应的表格。我去过那里,有些设备在包命名等方面确实有所不同

您可以使用类似的应用程序来浏览模式

其他有用的资料来源:


您确实需要检查您愿意支持的设备。看

/data/ 
并检查是否有相应的表格。我去过那里,有些设备在包命名等方面确实有所不同

您可以使用类似的应用程序来浏览模式

其他有用的资料来源:


我的问题是:ACRA日志中是否存在其他SQL错误?特别是关于数据库损坏

在我的问题中:我介绍了随机修改DB文件时SQLite行为的快速分析。当“SELECT*”失败时,有时SQLite会声称这是因为表不存在。当我将修改后的DB文件加载到编辑器中时,所有表都丢失了——所以,随机修改