【问题标题】:Problems with SQLCipherSQLCipher 的问题
【发布时间】:2013-06-10 17:27:46
【问题描述】:

我有一个应用程序使用使用 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 中的一些字段和一个表中的更多行。

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

【问题讨论】:

  • 您在尝试访问数据库时是否提供了密码?
  • 是的,我提供了密码。当我在资产目录中有旧数据库时,它可以工作。当我用新的替换它时,它不起作用。我还可以看到,数据库位于已安装的目标设备上。

标签: android metadata sqlcipher


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多