0

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 は既に存在します。唯一の変更点は、データベース内のいくつかのフィールドと、1 つのテーブル内の行数です。

私はすべてのヒントに満足しています:-)

4

1 に答える 1

0

スタック トレースのパッケージ名に基づいて、古いバージョンの SQLCipher for Android ライブラリを使用しているようです。ここで入手できる最新バージョンのライブラリにアップグレードすることを検討してください。また、デスクトップでデータベースをローカルに開いて、ファイルが破損していないことを確認する必要があります。

于 2013-06-11T15:05:07.200 に答える