android data_error ai_generated true

IllegalStateException:Room 无法验证数据完整性。看起来您更改了架构但忘记更新版本号。您可以通过增加版本号来修复此问题。

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.

ID: android/room-migration-not-found

其他格式: JSON · Markdown 中文 · English
87%修复率
89%置信度
1证据数
2023-12-01首次发现

版本兼容性

版本状态引入弃用备注
Room 2.4.0 active — — —
Room 2.5.0 active — — —
Room 2.6.0 active — — —

根因分析

Room 数据库架构已更改(例如添加了列),但版本号未增加或未提供迁移,导致完整性检查失败。

English

Room database schema has changed (e.g., added column) but version number not incremented or migration not provided, causing integrity check failure.

generic

官方文档

https://developer.android.com/training/data-storage/room/migrating

解决方案

  1. Increment database version and add migration: `@Database(entities = [User::class], version = 2)` and `val MIGRATION_1_2 = object : Migration(1, 2) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("ALTER TABLE User ADD COLUMN age INTEGER NOT NULL DEFAULT 0") } }`
  2. Use `autoMigrations` annotation: `@Database(entities = [User::class], version = 2, autoMigrations = [AutoMigration(from = 1, to = 2)])` for simple changes like adding columns with defaults.
  3. Export schema to JSON using `room.schemaLocation` in build.gradle, then use Room's automatic migration validator to detect issues.

无效尝试

常见但无效的做法:

  1. Delete app data or uninstall app 60% 失败

    Loses all user data; only works for development, not production.

  2. Set fallbackToDestructiveMigration() in Room database builder 75% 失败

    Destroys existing database on version mismatch, causing data loss; not suitable for production.

  3. Ignore the error and continue 95% 失败

    App crashes on database access; cannot proceed without fixing migration.