0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Roomが「DatabaseのVersionが違う」とクラッシュしてしまう原因パターン

Last updated at Posted at 2024-07-02

Roomが「DatabaseのVersionが違う」とクラッシュしてしまう原因パターン

パターン1:新規開発もしくは、初めてDBに変更を加える
パターン2:DB修正後とかに、再度DBに修正を加える

パターン1:新規開発もしくは、初めてDBに変更を加える


①開発環境(Android Studio)で、初めてDBに修正を入れてDBバージョンを1→2に上げた
②実機(Android端末)から、アプリ(←DBバージョン1)をアンインストールせずに、アプリを再インストール(←DBバージョン2)
③マイグレーションが実行される
 (DBバージョンが上がっているアプリを再インストールされたため、マイグレーションが実行される)
★ここで例外が出て(クラッシュして)しまうとダメ!!
 ここでクラッシュするのはヤバいので、要調査&要対応!!

パターン2:DB修正後とかに、再度DBに修正を加える


①開発環境(Android Studio)で修正したDB周りのコードが間違えてたから直したお!
 (DBバージョンは2から変更せず、 DBの定義(Entityクラスとか)修正)
②実機(Android端末)から、アプリ(←DBバージョン2)をアンインストールせずに、アプリを再インストール(←DBバージョン2)
③実機(Android端末)内で、allowBackupのバックアップ情報(コードを直す前のDB情報)を参照
④マイグレーションが実行されず、DB情報が噛み合わなくなって例外が発生(クラッシュする)!!
 (↑開発中はよくある(よくやってしまう)ため、あまり問題にはならない)

これの回避策は、
アプリをちゃんとアンインストールしてから再インストールしなおす。
もしくは、実機(Android端末)の設定から、アプリのストレージ情報を手動で削除する
こうすることで、DBのバックアップ情報を削除できる!!

備考

Roomで「DatabaseのVersionが違う」とクラッシュしてしまうのは、もし問題が元々のソースコードであった場合、アプリアップデート時に検出されるような目立つクラッシュ。
開発環境では、DBを弄ることが多いため、この手のクラッシュは必然的に出やすくなるが、テスト観点としても気にしておく必要はある。

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?