房间迁移失败不报错
Room migration fails without error
我正在使用 Room,当我更改一个或多个实体时它突然停止显示错误。例如,我向我的实体添加一个字段(供应商:字符串),它只是清除所有数据而没有任何错误或建议。只是清除所有数据并停止工作。我不使用 fallbackToDestructiveMigration。
请帮助我真的不知道如何避免这种情况。我所有的分支都在等待数据库同步。
这是代码
@Database(entities = [(ServiceEntity::class), (ConfigEntity::class), (RequestEntity::class), (FaqEntity::class),
(SubscriptionEntity::class), (OrderEntity::class), (DeviceEntity::class), (ProblemEntity::class)], version = 5,
exportSchema = true)
abstract class RoomAppDataSource: RoomDatabase() {
abstract fun serviceDao(): ServiceDao
abstract fun configDao(): ConfigDao
abstract fun requestDao(): RequestDao
abstract fun otherDao(): OtherDao
abstract fun subscriptionsDao(): SubscriptionsDao
abstract fun ordersDao(): OrdersDao
companion object {
private val TAG = RoomAppDataSource::class.java.simpleName
private val Migration_4_5 = object: Migration(4, 5) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE ${RoomContract.TABLE_SERVICES} ADD COLUMN vendor TEXT default '' NOT NULL")
}
}
fun buildDataSource(context: Context): RoomAppDataSource = Room.databaseBuilder(
context.applicationContext, RoomAppDataSource::class.java, RoomContract.DATABASE_APP)
.addMigrations(Migration_4_5)
.build()
}
}
P.S。如果我删除新行它工作正常,但是当我在任何实体应用程序中添加 smth 从教程页面开始时,因为没有保存令牌
找到答案。我不知道为什么,但是 room 只是停止断言新版本的数据库或破坏性迁移,所以只有在使用 Dao funcs 时我才能看到错误。可能对某人有帮助。
我正在使用 Room,当我更改一个或多个实体时它突然停止显示错误。例如,我向我的实体添加一个字段(供应商:字符串),它只是清除所有数据而没有任何错误或建议。只是清除所有数据并停止工作。我不使用 fallbackToDestructiveMigration。
请帮助我真的不知道如何避免这种情况。我所有的分支都在等待数据库同步。
这是代码
@Database(entities = [(ServiceEntity::class), (ConfigEntity::class), (RequestEntity::class), (FaqEntity::class),
(SubscriptionEntity::class), (OrderEntity::class), (DeviceEntity::class), (ProblemEntity::class)], version = 5,
exportSchema = true)
abstract class RoomAppDataSource: RoomDatabase() {
abstract fun serviceDao(): ServiceDao
abstract fun configDao(): ConfigDao
abstract fun requestDao(): RequestDao
abstract fun otherDao(): OtherDao
abstract fun subscriptionsDao(): SubscriptionsDao
abstract fun ordersDao(): OrdersDao
companion object {
private val TAG = RoomAppDataSource::class.java.simpleName
private val Migration_4_5 = object: Migration(4, 5) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE ${RoomContract.TABLE_SERVICES} ADD COLUMN vendor TEXT default '' NOT NULL")
}
}
fun buildDataSource(context: Context): RoomAppDataSource = Room.databaseBuilder(
context.applicationContext, RoomAppDataSource::class.java, RoomContract.DATABASE_APP)
.addMigrations(Migration_4_5)
.build()
}
}
P.S。如果我删除新行它工作正常,但是当我在任何实体应用程序中添加 smth 从教程页面开始时,因为没有保存令牌
找到答案。我不知道为什么,但是 room 只是停止断言新版本的数据库或破坏性迁移,所以只有在使用 Dao funcs 时我才能看到错误。可能对某人有帮助。