sql >> データベース >  >> RDS >> SQLite

SQLiteReadOnlyDatabaseException:読み取り専用データベースを書き込もうとしました(コード1032)

    私は多かれ少なかれまったく同じ問題に悩まされており、理にかなっている問題に未解決の欠陥を見つけました...

    https://code.google.com/p/android/issues/detail?id=174566

    私の回避策は、最善の解決策ではありませんが、データベースのリビジョンをステップ実行して自分で追跡しないことです。したがって、onUpgrade()を呼び出さないでください。 、アプリを更新するときに手動でアップグレードします。

    または、読み取り専用の小さなDBがある場合は、すべてのonCreate()でアセット内のdbのコピーをトリガーできます。 DBHelperで クラスですが、ファイルシステムがいっぱいの場合、これは望ましくない問題を引き起こす可能性があるため、より良い解決策を探しているときにのみこれを行ってください。

    @Override
    public void onCreate(SQLiteDatabase db) {
        // Workaround for Issue 174566
        myContext.deleteDatabase(DB_NAME);
        try {
            copyDataBase();
        }
        catch(IOException e) {
            System.out.println("IOException " + e.getLocalizedMessage());
        }
    }
    

    私のアプリは、回避策を使用して適切にアップグレードするようになりました。この欠陥が最初に発生してからどれくらいの時間が経過したかを判断することで、まったく修正されない可能性があります...

    申し訳ありませんが、これは問題の完全な解決策ではありませんが、少なくとも前進する方法です。



    1. カンマ区切りの値を列に分割する方法

    2. MariaDBサーバーでのAriaストレージエンジンの使用

    3. SQLで重複を表示しない方法

    4. Oracle SQL Developerで変数を使用するにはどうすればよいですか?