Ответ
Миграция базы данных — это процесс изменения структуры БД (например, таблиц, индексов) без потери данных. В Android используется Room с классами Migration, где указываются изменения между версиями.
Пример:
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE User ADD COLUMN age INTEGER NOT NULL DEFAULT 0")
}
}
// Добавляем в RoomDatabase.Builder
Room.databaseBuilder(context, AppDatabase::class.java, "db")
.addMigrations(MIGRATION_1_2)
.build()
Нюансы:
- При ошибке в SQL-запросе приложение упадёт.
- Для сложных изменений (например, переименование столбца) может потребоваться временная таблица.
- Миграции должны быть последовательными (1→2, 2→3, а не 1→3).