2015-12-23 12 views
11

AndroidプロジェクトのいずれかでSqliteデータベースを使用しています。 One Plus Twoデバイスを除くすべてのデバイスで正常に動作します。Android One Plus 2:dbのロケールを変更できません

データベースを開こうとしているときに例外が発生しています。これがクラッシュログです。

12-23 19:14:35.235: E/SQLiteLog(3133): (11) database corruption at line 53216 of [9491ba7d73] 
12-23 19:14:35.235: E/SQLiteLog(3133): (11) statement aborts at 7: [SELECT locale FROM android_metadata UNION SELECT NULL ORDER BY locale DESC LIMIT 1] 
12-23 19:14:35.237: E/SQLiteDatabase(3133): Failed to open database '/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite'. 
12-23 19:14:35.237: E/SQLiteDatabase(3133): android.database.sqlite.SQLiteException: Failed to change locale for db '/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite' to 'en_US'. 

くださいclick hereフルクラッシュログ

を見るために私はここでそのような他の質問を見てきました、私はほとんどすべての答えを試してみましたが、何も働きません。 私はthisthisを試しました。

編集:デバイスは、Oxygen Lollipopで動作します。

+0

デバイスモデルは、割り当て、ファームウェア、ROMなどを教えてくれません。OnePlusデバイスは一般的に多くの異なる設定を実行するため、便利です。 –

+0

このパス '/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite/'は存在しないかもしれません。 'File'型を返す' context.getDatabasePath(/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite/) 'をチェックしてください。 –

+0

'E/SQLiteDatabase(6278):原因:crashlogの中に'行がありますか? – naXa

答えて

1

私はこのエラーが発生している理由を見つけることができませんが、どういうわけか私はこれを避けるために以下を実行しました。

以前は、バンドルに.sqliteデータベースがありました。ユーザーが私たちのアプリを初めて開いたときに、バンドルから正しいパスに.sqliteデータベースをコピーしました。

今、私は.sqliteから生のクエリをエクスポートし、バンドルをtxtファイルとして追加しました。ユーザーが最初にアプリケーションを開くと、まずパスに空の.sqliteファイルを作成してから、バンドルからtxtファイルからすべての.sqlクエリを読み込み、.sqliteファイルでそれらを実行します。パス。

0

ロケールを手動で変更してください。

データベースファイルをSQLiteStudioなどのSQLiteエディタで開き、次にandroid_metadataテーブルを開きます。存在しない場合は作成してください。レコードを挿入するための(クエリエディタ(ツール>オープンクエリエディタで作成)および/以下のDDLコードをコピー&ペーストする)

CREATE TABLE android_metadata ( 
    locale TEXT 
); 

コピーする/クエリエディタで次の行を貼り付けます。

INSERT INTO android_metadata VALUES ('en_us'); 

ヒント:SQLiteStudioでクエリを実行するには、ツールバーのlightningアイコンを使用してボタンを押す必要があります。

+0

それは、動作しないと試してみました。 –

関連する問題