SQLCipher的问题

时间:2013-06-10 17:27:46

标签: android metadata sqlcipher

我有一个使用使用 SQLCipher 加密的数据库的应用。一切正常。但现在我在数据库中添加了一些数据。在它大约1.4 MB之前,它大约是6 MB。尝试使用新数据库运行相同的应用程序会产生以下错误:

06-10 17:20:31.819: E/Database(3821): CREATE TABLE android_metadata failed
06-10 17:20:31.889: E/Database(3821): Failed to setLocale() when constructing, closing the database
06-10 17:20:31.889: E/Database(3821): info.guardianproject.database.sqlcipher.SQLiteDatabaseCorruptException: database disk image is malformed
06-10 17:20:31.889: E/Database(3821):   at info.guardianproject.database.sqlcipher.SQLiteDatabase.native_setLocale(Native Method)
06-10 17:20:31.889: E/Database(3821):   at info.guardianproject.database.sqlcipher.SQLiteDatabase.setLocale(SQLiteDatabase.java:2015)
06-10 17:20:31.889: E/Database(3821):   at info.guardianproject.database.sqlcipher.SQLiteDatabase.<init>(SQLiteDatabase.java:1881)
06-10 17:20:31.889: E/Database(3821):   at info.guardianproject.database.sqlcipher.SQLiteDatabase.openDatabase(SQLiteDatabase.java:864)

但是在旧版本的数据库中,表android_metadata已经存在。唯一的变化是db中的一些字段和一个表中的更多行。

我会为每一个提示感到高兴: - )

1 个答案:

答案 0 :(得分:0)

您似乎使用旧版本的SQLCipher for Android库,基于堆栈跟踪中的包名称。您可以考虑升级到可用的库here的最新版本。此外,您应该尝试在桌面上本地打开数据库以验证文件是否已损坏。