Ошибка "Room cannot verify the data integrity"
Ошибка:
2023-03-12 20:31:15.965 19709-19709/com.example.myapplication E/ImeBackDispatcher: Ime callback not found. Ignoring unregisterReceivedCallback. callbackId: 206664551
2023-03-12 20:31:26.587 19709-20007/com.example.myapplication E/StudioTransport: JVMTI error: 79(JVMTI_ERROR_UNMODIFIABLE_CLASS)
2023-03-12 20:33:55.557 20346-20462/com.example.myapplication E/StudioTransport: JVMTI error: 79(JVMTI_ERROR_UNMODIFIABLE_CLASS)
2023-03-12 20:33:59.988 20346-20433/com.example.myapplication E/StudioProfiler: Studio Profilers encountered an unexpected error. Consider reporting a bug, including logcat output below.
See also: https://developer.android.com/studio/report-bugs.html#studio-bugs
No such field
java.lang.NoSuchFieldException: No field mServedInputConnectionWrapper in class Landroid/view/inputmethod/InputMethodManager; (declaration of 'android.view.inputmethod.InputMethodManager' appears in /system/framework/framework.jar!classes3.dex)
at java.lang.Class.getDeclaredField(Native Method)
at com.android.tools.profiler.support.profilers.EventProfiler$InputConnectionHandler.run(EventProfiler.java:269)
at java.lang.Thread.run(Thread.java:1012)
2023-03-12 20:34:04.962 20346-20346/com.example.myapplication E/ImeBackDispatcher: Ime callback not found. Ignoring unregisterReceivedCallback. callbackId: 206664551
2023-03-12 20:41:38.660 20634-20675/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_0
Process: com.example.myapplication, PID: 20634
java.lang.RuntimeException: Exception while computing database live data.
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0(RoomTrackingLiveData.kt:74)
at androidx.room.RoomTrackingLiveData.$r8$lambda$PhMGW5zFk4QWazERd2lfEeLZqW0(Unknown Source:0)
at androidx.room.RoomTrackingLiveData$$ExternalSyntheticLambda0.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.IllegalStateException: 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. Expected identity hash: 2bfb96692c4ea84ee392a75a0d47dbcc, found: 92c88e6f005b58b9d42d215909b60c2a
at androidx.room.RoomOpenHelper.checkIdentity(RoomOpenHelper.kt:147)
at androidx.room.RoomOpenHelper.onOpen(RoomOpenHelper.kt:128)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen(FrameworkSQLiteOpenHelper.kt:279)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:427)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:316)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableOrReadableDatabase(FrameworkSQLiteOpenHelper.kt:231)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.innerGetDatabase(FrameworkSQLiteOpenHelper.kt:189)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getSupportDatabase(FrameworkSQLiteOpenHelper.kt:151)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.kt:104)
at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:629)
at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:448)
at androidx.room.RoomDatabase.query(RoomDatabase.kt:477)
at androidx.room.util.DBUtil.query(DBUtil.kt:75)
at com.example.myapplication.listdbDao_Impl$8.call(listdbDao_Impl.java:224)
at com.example.myapplication.listdbDao_Impl$8.call(listdbDao_Impl.java:221)
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0(RoomTrackingLiveData.kt:72)
at androidx.room.RoomTrackingLiveData.$r8$lambda$PhMGW5zFk4QWazERd2lfEeLZqW0(Unknown Source:0)
at androidx.room.RoomTrackingLiveData$$ExternalSyntheticLambda0.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
2023-03-12 20:42:01.608 20739-20766/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_0
Process: com.example.myapplication, PID: 20739
java.lang.RuntimeException: Exception while computing database live data.
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0(RoomTrackingLiveData.kt:74)
at androidx.room.RoomTrackingLiveData.$r8$lambda$PhMGW5zFk4QWazERd2lfEeLZqW0(Unknown Source:0)
at androidx.room.RoomTrackingLiveData$$ExternalSyntheticLambda0.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.IllegalStateException: 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. Expected identity hash: 2bfb96692c4ea84ee392a75a0d47dbcc, found: 92c88e6f005b58b9d42d215909b60c2a
at androidx.room.RoomOpenHelper.checkIdentity(RoomOpenHelper.kt:147)
at androidx.room.RoomOpenHelper.onOpen(RoomOpenHelper.kt:128)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen(FrameworkSQLiteOpenHelper.kt:279)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:427)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:316)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableOrReadableDatabase(FrameworkSQLiteOpenHelper.kt:231)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.innerGetDatabase(FrameworkSQLiteOpenHelper.kt:189)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getSupportDatabase(FrameworkSQLiteOpenHelper.kt:151)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.kt:104)
at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:629)
at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:448)
at androidx.room.RoomDatabase.query(RoomDatabase.kt:477)
at androidx.room.util.DBUtil.query(DBUtil.kt:75)
at com.example.myapplication.listdbDao_Impl$8.call(listdbDao_Impl.java:224)
at com.example.myapplication.listdbDao_Impl$8.call(listdbDao_Impl.java:221)
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0(RoomTrackingLiveData.kt:72)
at androidx.room.RoomTrackingLiveData.$r8$lambda$PhMGW5zFk4QWazERd2lfEeLZqW0(Unknown Source:0)
at androidx.room.RoomTrackingLiveData$$ExternalSyntheticLambda0.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
2023-03-12 20:45:22.205 20815-20844/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_0
Process: com.example.myapplication, PID: 20815
java.lang.RuntimeException: Exception while computing database live data.
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0(RoomTrackingLiveData.kt:74)
at androidx.room.RoomTrackingLiveData.$r8$lambda$PhMGW5zFk4QWazERd2lfEeLZqW0(Unknown Source:0)
at androidx.room.RoomTrackingLiveData$$ExternalSyntheticLambda0.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.IllegalStateException: Migration didn't properly handle: listdb0(com.example.myapplication.list).
Expected:
TableInfo{name='listdb0', columns={list=Column{name='list', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='undefined'}, namelist=Column{name='namelist', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='undefined'}, id=Column{name='id', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='undefined'}}, foreignKeys=[], indices=[]}
Found:
TableInfo{name='listdb0', columns={}, foreignKeys=[], indices=[]}
at androidx.room.RoomOpenHelper.onUpgrade(RoomOpenHelper.kt:94)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onUpgrade(FrameworkSQLiteOpenHelper.kt:252)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:416)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:316)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableOrReadableDatabase(FrameworkSQLiteOpenHelper.kt:231)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.innerGetDatabase(FrameworkSQLiteOpenHelper.kt:189)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getSupportDatabase(FrameworkSQLiteOpenHelper.kt:151)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.kt:104)
at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:629)
at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:448)
at androidx.room.RoomDatabase.query(RoomDatabase.kt:477)
at androidx.room.util.DBUtil.query(DBUtil.kt:75)
at com.example.myapplication.listdbDao_Impl$8.call(listdbDao_Impl.java:224)
at com.example.myapplication.listdbDao_Impl$8.call(listdbDao_Impl.java:221)
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0(RoomTrackingLiveData.kt:72)
... 5 more
2023-03-12 20:45:43.788 20886-20915/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_0
Process: com.example.myapplication, PID: 20886
java.lang.RuntimeException: Exception while computing database live data.
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0(RoomTrackingLiveData.kt:74)
at androidx.room.RoomTrackingLiveData.$r8$lambda$PhMGW5zFk4QWazERd2lfEeLZqW0(Unknown Source:0)
at androidx.room.RoomTrackingLiveData$$ExternalSyntheticLambda0.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.IllegalStateException: Migration didn't properly handle: listdb0(com.example.myapplication.list).
Expected:
TableInfo{name='listdb0', columns={list=Column{name='list', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='undefined'}, namelist=Column{name='namelist', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='undefined'}, id=Column{name='id', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='undefined'}}, foreignKeys=[], indices=[]}
Found:
TableInfo{name='listdb0', columns={}, foreignKeys=[], indices=[]}
at androidx.room.RoomOpenHelper.onUpgrade(RoomOpenHelper.kt:94)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onUpgrade(FrameworkSQLiteOpenHelper.kt:252)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:416)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:316)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableOrReadableDatabase(FrameworkSQLiteOpenHelper.kt:231)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.innerGetDatabase(FrameworkSQLiteOpenHelper.kt:189)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getSupportDatabase(FrameworkSQLiteOpenHelper.kt:151)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.kt:104)
at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:629)
at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:448)
at androidx.room.RoomDatabase.query(RoomDatabase.kt:477)
at androidx.room.util.DBUtil.query(DBUtil.kt:75)
at com.example.myapplication.listdbDao_Impl$8.call(listdbDao_Impl.java:224)
at com.example.myapplication.listdbDao_Impl$8.call(listdbDao_Impl.java:221)
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0(RoomTrackingLiveData.kt:72)
... 5 more
Entity:
@Entity(tableName = "listdb0")
data class list(
@PrimaryKey(autoGenerate = true)
var id: Int? = null,
@ColumnInfo(name="namelist")
var namelist: String,
@ColumnInfo(name="list")
var list: MutableMap<Boolean,String>
) : Serializable
Dao:
@Dao
interface listdbDao {
@Insert
suspend fun insertlist(list: list)
@Update
suspend fun updatelist(list: list)
@Delete
suspend fun deletelist(list: list)
@Query("SELECT * FROM listdb0")
suspend fun getAlllists(): List<list>
@Query("SELECT * FROM listdb0")
fun getAlllistsLivedata(): LiveData<List<list>>
}
Database:
@Database(
entities = [list::class],
version = 1,
// autoMigrations = [
// AutoMigration(from=1,to=2),
//
// ],
exportSchema = true
)
@TypeConverters(dictconverter::class)
abstract class listsdb : RoomDatabase() {
abstract fun gdao(): listdbDao
companion object{
private var db : listsdb? = null
fun listdbfunc(context: Context): listsdb{
if (db==null){
db = Room.databaseBuilder(
context.applicationContext,
listsdb::class.java,
"notes.db"
).build()
}
return db!!
}
}
}
TypeConverter:
public class dictconverter {
private val gson = Gson()
@TypeConverter
fun toJson(segments: Map<Boolean,String>?): String {
return gson.toJson(segments)
}
@TypeConverter
fun fromJson(json: String?): Map<Boolean,String> {
return gson.fromJson<Map<Boolean,String>>(
json,
object : TypeToken<Map<Boolean, String>?>() {}.type
)
}
}
Эта база — вторая в приложении, и я не замечал проблемы, пока не попробовал вывести элементы из БД и, собственно, вышла такая ошибка.
Источник: Stack Overflow на русском