Я добавил поле в модель моего приложения.
Локальное постоянство модели управляется Room Persistence Library .
К сожалению, забыл создать Миграция и загрузка новой версии приложения в Google Play.
Теперь некоторые люди не могут открыть приложение.Он автоматически закрывается при открытии.Вот трассировка стека, которую я получаю на консоли Google Play.
java.lang.IllegalStateException:
at android.database.sqlite.SQLiteClosable.acquireReference (SQLiteClosable.java:55)
at android.database.sqlite.SQLiteDatabase.executeSql (SQLiteDatabase.java:2197)
at android.database.sqlite.SQLiteDatabase.execSQL (SQLiteDatabase.java:2142)
at android.arch.persistence.db.framework.FrameworkSQLiteDatabase.execSQL (FrameworkSQLiteDatabase.java:240)
at android.arch.persistence.room.RoomOpenHelper.createMasterTableIfNotExists (RoomOpenHelper.java:131)
at android.arch.persistence.room.RoomOpenHelper.checkIdentity (RoomOpenHelper.java:107)
at android.arch.persistence.room.RoomOpenHelper.onOpen (RoomOpenHelper.java:100)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen (FrameworkSQLiteOpenHelper.java:133)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:349)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:238)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase (FrameworkSQLiteOpenHelper.java:93)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase (FrameworkSQLiteOpenHelper.java:54)
at android.arch.persistence.room.RoomDatabase.inTransaction (RoomDatabase.java:305)
at android.arch.persistence.room.InvalidationTracker$1.run (InvalidationTracker.java:281)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
at java.lang.Thread.run (Thread.java:764)
Я не могу просто сгенерировать миграцию сейчас, потому что другие миграции уже могли выполняться для некоторых пользователей.Я думаю, что у новых пользователей проблема уже решена, поэтому они также не могут запустить миграцию.
Примечание. Сохраненные данные не очень важны, поэтому, если я уроню их, это не будет большой проблемой.всю базу данных и создал ее снова.
Как я могу выполнить это действие DROP DATABASE
, когда я ловлю IllegalStateException
?Или есть лучшее решение для этого?