Ответ
Миграция БД в Room выполняется через Migration объекты. При изменении схемы БД нужно:
- Увеличить версию БД в
@Database(version = N) - Создать объект Migration с указанием старой и новой версии
- Добавить миграцию в билдер Room
Пример:
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE users ADD COLUMN last_login INTEGER")
}
}
Room.databaseBuilder(...)
.addMigrations(MIGRATION_1_2)
.build()
Важно:
- Для сложных изменений (переименование/удаление столбцов) используйте временную таблицу
- Всегда тестируйте миграции
- Используйте
fallbackToDestructiveMigration()только для dev-версий