ICS中的荒谬SQLite错误



我已经实现了这里的代码,并对这里进行了修改。

这一切似乎在Android 2.2模拟器上运行良好,但在实际的ICS设备和Jellybean模拟器上,我似乎得到了以下(奇怪)错误:

android.database.sqlite.SQLiteException:无法将数据库从300300版本降级到12

我的数据库版本不可能是300300,我已经尝试过删除和重新安装应用程序,但似乎没有什么不同。关于为什么会发生这种情况,有什么线索吗?

不久前我也遇到了同样的问题。这似乎只发生在某些设备上,这些设备似乎已经编译了内置的SQLite库,默认情况下启用了预写日志记录(WAL)。

每当您尝试以只读模式打开数据库时,就会出现问题,因为启用了WAL的数据库无法以只读模式开启。解决方案是避免使用任何试图以只读模式打开数据库的SQLite API,如getReadableDatabase或SQLiteDatabase。OPEN_READONLY标志。相反,请尝试使用getWritableDatabase或SQLiteDatabase。无论何时在Android上打开SQLite数据库,都会使用OPEN_READWRITE标志。

相关内容

最新更新