Итак, в основном я использую место и пытаюсь добавить миграцию с версии базы данных 1 на 2, но моя команда alter не работает. Моя текущая реализация приведена ниже:
void init() {
db = Room.databaseBuilder(Global.getInstance(),
AppDatabase.class, "feed").addMigrations(MIGRATION_1_2).build();
}
Миграционная недвижимость:
static final Migration MIGRATION_1_2 = new Migration(1,2) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE 'post' ADD COLUMN 'age' INTEGER NOT NULL DEFAULT 0");
Log.d("VROM","Migration");
}
};
Реализация базы данных:
@Database(entities = {Feed.class, DownloadModel.class}, version = 1) public abstract class AppDatabase extends RoomDatabase {
public abstract DaoAccess getFeedDao();}
Таким образом, после увеличения версии с 1 до 2 выполняется execSQL()
, но новый столбец не добавляется в мою базу данных. Я вытащил свою базу данных из каталога приложений и несколько раз проверял, но столбца нет. Кроме того, если я убью свое приложение и снова запустил его, метод migrate
вызывается снова, не знаю, является ли это предполагаемой функцией, но он нарушает функциональность для меня. Я думал, что migrate будет вызываться только один раз, так же, как onUpgrade()