Sobes.tech
Junior — Middle

Vai Room nodrošina iebūvētu atbalstu automātiskām datu bāzes atjaunināšanām, ja mainās shēma?

sobes.tech AI

Atbilde no AI

Room nenodrošina automātisku datu bāzes migrāciju, veicot shēmas izmaiņas. Ja maināt datu bāzes struktūru (piemēram, pievienojot vai noņemot kolonnas), jums jāapraksta migrācijas, izmantojot Migration objektu. Bez tā lietotne, startējot ar jaunu shēmu un vecu datu bāzes versiju, radīs kļūdu.

Migrācijas piemērs:

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

Tādējādi, izstrādātājs ir atbildīgs par migrāciju izveidi un piemērošanu, veicot shēmas izmaiņas.