Вопрос объясняет механизм обновления схемы базы данных без потери данных.
Миграции — это SQL-скрипты, которые изменяют структуру БД между версиями. Реализуются через Migration в Room или SQL-файлы в SQLDelight.
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(db: SupportSQLiteDatabase) {
db.execSQL("ALTER TABLE users ADD COLUMN age INTEGER DEFAULT 0")
}
}
DatabaseBuilder
.addMigrations(MIGRATION_1_2)Добавить SQL-файл в папку migrations:
/sqldelight/migrations/2.sqlСодержимое файла:
ALTER TABLE users ADD COLUMN age INTEGER DEFAULT 0;Важно:
Всегда тестируйте миграции на копии продовой БД.
Используйте fallbackToDestructiveMigration только для разработки.