Room利用時のエラーと対処方法【Androidアプリ開発】

Roomを実装した際に遭遇したエラーと対処方法をまとめていきます。

Roomの実装方法はこちらで紹介しています。

Schema export directory is not provided to the annotation processor so we cannot export the schema.

スキーマをエクスポートするディレクトリを指定する。もしくは、”export=false”を指定する。

”export=false” を指定する場合は、@Databaseアノテーションの宣言時に指定する。

@Database(entities = [User::class], version = 1, exportSchema = false)

java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.

非同期で実装する。

Room cannot verify the data integrity. Looks like you’ve changed schema but forgot to update the version number. You can simply fix this by increasing the version number

DBを変更した場合にバージョンを上げないといけない。

バージョンを変更するには、 @Databaseアノテーションの”version”の数字を変える。

@Database(entities = [User::class], version = 1, exportSchema = false)

A migration from 1 to 2 was required but not found

バージョンを上げた場合に、変更内容を書かないといけない。

新しくテーブルを追加した場合はCreate、カラム変更をした場合はAlter Tableといったように変更内容に応じて処理を書く必要がある。

fun getDatabase(context: Context): AppDatabase {
    val MIGRATION_1_2: Migration = object : Migration(1, 2) {
        override fun migrate(database: SupportSQLiteDatabase) {
          //バージョン1→2にあげる処理
        }
    }

    return INSTANCE ?: synchronized(this) {
        val instance = Room.databaseBuilder(
            context.applicationContext,
            AppDatabase::class.java,
            "user_database")
            .addMigrations(MIGRATION_1_2) //バージョン1→2にあげる処理
            .build()
        INSTANCE = instance
        // return instance
        instance
    }
}

学習方法

Javaの基礎を学ぶ

Androidアプリ開発では、JavaやKotlinが用いられます。
いきなりAndroidアプリ開発を学習するのは難しいので、Javaの基礎から学習しておくと理解しやすくなります。

既に、Javaの学習経験・開発経験がある方は必要ありませんが、Java言語を使ったことがないという方は、Javaの基礎から学習することをオススメします。

また、Kotlinに関しては、Javaを簡略したような書き方となっています。Javaの基礎知識がないと学習が難しいですが、Javaの基礎知識があれば、ご自身で調べながら学習することも十分に可能です。

 

独学が難しいと思ったら…

プログラミングスクールを活用してみても良いでしょう。
通常のプログラミングスクールは、数十万円の費用が掛かる場合があり、中々手が出しづらいですが、サブスク型のプログラミングスクールも存在しています。
サブスク型と言っても、通常のプログラミングスクールと同じように、現役エンジニアによるサポートも付いています。
最も安い基本的なコースで、月額1万円ほどとなっており、他のプログラミングスクールよりも初期費用が安いため、気軽に始められます。

Androidアプリ開発を学ぶ

Javaの基礎知識があったとしても、Androidアプリ独特の仕組みがあるため、とっつきづらいです。

Javaでの開発経験があれば、問題を解決しながら学習することも可能です。しかし、(当サイト含め)ネットでの情報は断片的に解説されていることも多く、流れで理解するのは難しいかしれません。

ご自身で調べながら学習することが難しいと感じたら、市販の参考書を活用すると良いでしょう。参考書では、Androidアプリ開発というテーマに沿って、1冊内で解説していく流れとなっていますので、入門書として活用すると理解がしやすくなります。

Kotlin版

Java版

 

Androidアプリ開発
この記事を書いた人

エンジニアとして仕事をしています。
仕事や趣味を通して、開発やプログラミングについて学んだことを綴っていきます。
 ・実務経験は、WEBシステムのサーバーサイドコーディングがメイン
 ・アプリ開発は趣味程度

akihiro-takedaをフォローする
akihiro-takedaをフォローする
プログラミング・開発の備忘録
タイトルとURLをコピーしました