Sobes.tech
Junior — Middle

Room sxemada o'zgarishlar bo'lsa, avtomatik ma'lumotlar bazasini yangilash uchun o'rnatilgan qo'llab-quvvatlashni taqdim etadimi?

sobes.tech AI

AIdan javob

Room sxemada o'zgarishlar bo'lsa, avtomatik ma'lumotlar bazasining migratsiyasini ta'minlamaydi. Agar siz ma'lumotlar bazasining tuzilishini o'zgartirsangiz (masalan, ustunlar qo'shish yoki olib tashlash), migratsiyalarni Migration ob'ekti yordamida aniq belgilashingiz kerak. Buning bo'lmasligi, yangi sxema va eski versiya bilan ishga tushirilganda, ilova xato beradi.

Migratsiya misoli:

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

Shu sababli, dasturchi sxema o'zgarishlarida migratsiyalarni yaratish va qo'llash uchun javobgardir.