【发布时间】:2019-11-01 18:02:39
【问题描述】:
我的应用程序处于发布模式,我正在使用房间数据库,而我之前的数据库版本是 2,启用了破坏性迁移的回退。
@Database(entities = {
User.class,ApplicationSetting.class},
version = 2,
exportSchema = false)
abstract public class DatabaseContext extends RoomDatabase {
private static final Object sLock = new Object();
private static DatabaseContext INSTANCE;
public static String DATABASE_NAME = AppConstants.DATABASE_NAME;
public static DatabaseContext getInstance(Context context) {
synchronized (sLock) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
DatabaseContext.class, DATABASE_NAME)
.fallbackToDestructiveMigration()
.build();
}
return INSTANCE;
}
}
我在表中添加了一个新列并将版本更改为 3。现在我想提供从版本 2 到版本 3 的迁移,这样数据就不会丢失。但我很困惑,因为在版本 2 中我启用了回退破坏性迁移,现在在版本 3 中我想保留用户数据并删除回退破坏。
我怎样才能做到这一点?
【问题讨论】:
标签: java android android-room