Alg*_*gar 6 android android-room android-architecture-components
我正在储蓄
data class Settings(
val foo: Int
)
Run Code Online (Sandbox Code Playgroud)
进入我的房间数据库版本1。
现在我需要扩展Settings
到
data class Settings(
val foo: Int,
val bar: ArrayList<Baz>
)
Run Code Online (Sandbox Code Playgroud)
在哪里
enum class Baz {
A, B, C
}
Run Code Online (Sandbox Code Playgroud)
所以我需要迁移到版本 2。
我有 的类型转换器bar
。我目前正在尝试类似的事情
val MIGRATION_1_2: Migration = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE settings ADD COLUMN bar TEXT")
}
}
Run Code Online (Sandbox Code Playgroud)
但这给了我一个IllegalStateException: Migration didn't properly handle Settings...
错误。
我被困住了。所以请帮忙!我如何让迁移工作?
小智 0
尝试更改设置表名称设置,并且您仅通过设置..
database.execSQL("ALTER TABLE Settings ADD COLUMN bar TEXT")
Run Code Online (Sandbox Code Playgroud)
添加后..
database = Room.databaseBuilder(context.getApplicationContext(),
UsersDatabase.class, "Sample.db")
.addMigrations(MIGRATION_1_2)
.build();
Run Code Online (Sandbox Code Playgroud)
如果仅添加新表,请参考此.. 房间数据库迁移
归档时间: |
|
查看次数: |
1234 次 |
最近记录: |