Junior — Middle
Zajišťuje Room vestavěnou podporu automatických aktualizací databáze při změnách schématu?
sobes.tech AI
Odpověď od AI
Room nezajišťuje automatickou migraci databáze při změnách schématu. Pokud měníte strukturu databáze (například přidáváte nebo odstraňujete sloupce), musíte explicitně popsat migrace pomocí objektu Migration. Bez toho dojde při spuštění s novým schématem a starší verzí databáze k chybě.
Příklad migrace:
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE users ADD COLUMN age INTEGER DEFAULT 0 NOT NULL")
}
}
val db = Room.databaseBuilder(context, AppDatabase::class.java, "db-name")
.addMigrations(MIGRATION_1_2)
.build()
Tento způsob je odpovědností vývojáře, který musí migrace vytvářet a aplikovat při změnách schématu.