Работал ли с миграцией БД

«Работал ли с миграцией БД» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал с миграцией БД в Room. Миграция нужна при изменении структуры БД (добавление/удаление таблиц, колонок и т.д.). В Room для этого используется Migration:

val MIGRATION_1_2 = object : Migration(1, 2) {
    override fun migrate(database: SupportSQLiteDatabase) {
        database.execSQL("ALTER TABLE users ADD COLUMN last_login INTEGER NOT NULL DEFAULT 0")
    }
}

Room.databaseBuilder(context, AppDatabase::class.java, "app.db")
    .addMigrations(MIGRATION_1_2)
    .build()

Важно:

  • Указывать правильные версии БД (fromVersion, toVersion)
  • Обрабатывать возможные исключения
  • Тестировать миграцию перед релизом
  • Для сложных изменений можно использовать временные таблицы