Sobes.tech
Junior — Middle

A Room beépített támogatást nyújt az adatbázis automatikus frissítéséhez séma változásakor?

sobes.tech MI

Válasz az MI-től

A Room nem biztosít automatikus adatbázis-migrációt a séma változásakor. Ha megváltoztatja az adatbázis szerkezetét (például oszlopokat ad hozzá vagy távolít el), akkor explicit módon le kell írnia a migrációkat a Migration objektum segítségével. Enélkül az alkalmazás hibaüzenetet fog adni, amikor új sémával és régi adatbázis-verzióval indítja el.

Migráció példája:

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()

Így a fejlesztő felelős a migrációk létrehozásáért és alkalmazásáért a séma változtatásakor.