Commit 6f509ad8ecf6d9cfd3872d0c2715b1ecade220b6
1 parent
eb247605
fix(goal): 修正 MIGRATION_23_24 导致启动崩溃
Room 校验时 Expected vs Found 两处不匹配: 1. status 列:migration SQL 写了 DEFAULT 'active',Room 期望 defaultValue=undefined (Entity 未用 @ColumnInfo(defaultValue=...),Room 不把 Kotlin 默认值当 SQL DEFAULT) 2. 多余 CREATE INDEX index_goals_status:@Entity 无 @Index,Room Expected indices=[] 修复:migration 去掉 DEFAULT 子句 + 去掉 CREATE INDEX 这两行。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Showing
1 changed file
with
4 additions
and
3 deletions
lifelog-recorder/app/src/main/kotlin/com/lemon/lifelog/data/AppDatabase.kt
| ... | ... | @@ -254,14 +254,16 @@ abstract class AppDatabase : RoomDatabase() { |
| 254 | 254 | } |
| 255 | 255 | } |
| 256 | 256 | |
| 257 | - /** P2 #6/#7:goals 新表 + followups.goalId 挂载字段。 */ | |
| 257 | + /** P2 #6/#7:goals 新表 + followups.goalId 挂载字段。 | |
| 258 | + * 注意:status 不能带 DEFAULT 'active',Room 期望 defaultValue='undefined'(无 @ColumnInfo defaultValue); | |
| 259 | + * 也不加 index——@Entity 上没有 @Index,Room expected indices=[]。 */ | |
| 258 | 260 | private val MIGRATION_23_24 = object : Migration(23, 24) { |
| 259 | 261 | override fun migrate(db: SupportSQLiteDatabase) { |
| 260 | 262 | db.execSQL( |
| 261 | 263 | "CREATE TABLE IF NOT EXISTS `goals` (" + |
| 262 | 264 | "`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + |
| 263 | 265 | "`text` TEXT NOT NULL, " + |
| 264 | - "`status` TEXT NOT NULL DEFAULT 'active', " + | |
| 266 | + "`status` TEXT NOT NULL, " + | |
| 265 | 267 | "`deadline` TEXT, " + |
| 266 | 268 | "`parentGoalId` INTEGER, " + |
| 267 | 269 | "`personId` INTEGER, " + |
| ... | ... | @@ -269,7 +271,6 @@ abstract class AppDatabase : RoomDatabase() { |
| 269 | 271 | "`createdAt` INTEGER NOT NULL, " + |
| 270 | 272 | "`updatedAt` INTEGER NOT NULL)" |
| 271 | 273 | ) |
| 272 | - db.execSQL("CREATE INDEX IF NOT EXISTS `index_goals_status` ON `goals` (`status`)") | |
| 273 | 274 | db.execSQL("ALTER TABLE `followups` ADD COLUMN `goalId` INTEGER") |
| 274 | 275 | } |
| 275 | 276 | } | ... | ... |