我可能不理解fallbackToDestructiveMigration()
当我改变了我的房间版本号,我希望它清除我的表,并重新填充,因为它没有在第一次启动。但它不叫“的onCreate”在我的回调这就要求我填入方法。相反,该表只清除。
关于我的DB:
它使用实时数据。用户永远不能改变的分贝。 ID的手动插入代码,因为它们被用作一个外键的在线数据库。
有没有办法为将来迁移到刚刚重建整个事情?
当您使用fallbackToDestructiveMigration()
,如已建立自己的DB你onCreate()
不叫。
但是你可以重建整个事情再次使用下列方式迁移:
Room.databaseBuilder(context, MyDatabase.class, DB_NAME)
.addMigrations(FROM_1_TO_2)
.build();
static final Migration FROM_1_TO_2 = new Migration(1, 2) {
@Override
public void migrate(final SupportSQLiteDatabase database) {
database.execSQL("DELETE FROM `table_name`"); //this will empty table
database.execSQL("YOUR_INSERTION_QUERY"); //insert in loop for multiple insertion
}
};
使用上面的代码,你可以随时清晰和更新数据库版本时,重新填充表。