版本间数据库

问题描述 投票:0回答:1

我可能不理解fallbackToDestructiveMigration()

当我改变了我的房间版本号,我希望它清除我的表,并重新填充,因为它没有在第一次启动。但它不叫“的onCreate”在我的回调这就要求我填入方法。相反,该表只清除。

关于我的DB:

它使用实时数据。用户永远不能改变的分贝。 ID的手动插入代码,因为它们被用作一个外键的在线数据库。

有没有办法为将来迁移到刚刚重建整个事情?

android android-room android-jetpack
1个回答
1
投票

当您使用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
        }
    };

使用上面的代码,你可以随时清晰和更新数据库版本时,重新填充表。

© www.soinside.com 2019 - 2024. All rights reserved.