这一切似乎在 Android 2.2 模拟器上运行良好,但是在实际的 ICS 设备和 Jellybean 模拟器上,我似乎得到了以下(奇怪的)错误:
android.database.sqlite.SQLiteException:无法将数据库从版本 300300 降级到 12
我的数据库版本不可能是 300300,我已经尝试删除并重新安装该应用程序,但似乎没有什么不同。关于为什么会发生这种情况的任何线索?
这一切似乎在 Android 2.2 模拟器上运行良好,但是在实际的 ICS 设备和 Jellybean 模拟器上,我似乎得到了以下(奇怪的)错误:
android.database.sqlite.SQLiteException:无法将数据库从版本 300300 降级到 12
我的数据库版本不可能是 300300,我已经尝试删除并重新安装该应用程序,但似乎没有什么不同。关于为什么会发生这种情况的任何线索?
不久前我遇到了同样的问题。它似乎只发生在某些设备上,这些设备似乎编译了内置 SQLite 库,默认情况下打开了预写日志 (WAL)。
每当您尝试以只读模式打开数据库时,这都会导致问题,因为启用了 WAL 的数据库无法以只读模式打开。解决方案是避免使用任何试图以只读模式打开数据库的 SQLite API,例如 getReadableDatabase 或 SQLiteDatabase.OPEN_READONLY 标志。相反,只要在 Android 上打开 SQLite 数据库,请尝试使用 getWritableDatabase 或 SQLiteDatabase.OPEN_READWRITE 标志。