Sobes.tech
Junior — Middle

არის თუ არა Room-ის შიდა მხარდაჭერა მონაცემთა ბაზის ავტომატური განახლებებისთვის სქემის ცვლილებების დროს?

sobes.tech AI

პასუხი AI-სგან

Room ავტომატურად არ უზრუნველყოფს მონაცემთა ბაზის მიგრაციას სქემის ცვლილებების დროს. თუ თქვენ ცვლილებებს ახდენთ ბაზის სტრუქტურაში (მაგალითად, სვეტების დამატება ან წაშლა), უნდა აღწეროთ მიგრაციები ღიად Migration ობიექტის გამოყენებით. ამის გარეშე, აპლიკაცია შეცდომას გამოიწვევს ახალი სქემით და ძველი ვერსიით დაწყებისას.

მიგრაციის მაგალითი:

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

ამიტომ, პროგრამისტი პასუხისმგებელია სქემის ცვლილების დროს მიგრაციების შექმნაზე და გამოყენებაზე.