【问题标题】:Move tables to a new database migration Room Android将表移动到新的数据库迁移 Room Android
【发布时间】:2021-06-04 22:15:16
【问题描述】:

我正在为我的数据库使用 Android 中的 Room。最近我不得不为我的主数据库创建一个备用数据库,所以现在我有 2 个数据库。

abstract class FirstDatabase : RoomDatabase() 
abstract class ScondDatabase : RoomDatabase() 

我在FirstDataBase 中有一个表,我想将它复制到SecondDataBase。我知道我应该写迁移,但我不知道我应该怎么做。 这是我目前用匕首换房间的迁移:

fun provideDatabaseMigration56(): Migration {
        return object : Migration(DATABASE_VERSION_5, DATABASE_VERSION_6) {
            override fun migrate(database: SupportSQLiteDatabase) {
                database.execSQL("DROP TABLE IF EXISTS `pins`")
                
            }
        }
    }

    fun provideDatabaseMigration45(): Migration {
        return object : Migration(DATABASE_VERSION_4, DATABASE_VERSION_5) {
            override fun migrate(database: SupportSQLiteDatabase) {
                database.execSQL("CREATE TABLE IF NOT EXISTS `pins` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `slug` TEXT NOT NULL)")
            }
        }
    }

【问题讨论】:

    标签: android android-room


    【解决方案1】:

    您正在寻找的是 SQLite ATTACH DATABASE 语句。这允许您将附加数据库附加到当前连接,然后运行引用两者中的表的查询。有一些详细的文档here 显示了语法:

    ATTACH DATABASE file_name AS database_name;
    

    然后,您可以运行从两个数据库中引用表的查询,但请确保在引用附加数据库中的表时,您将其引用为

    database_name.table_name
    

    而不仅仅是table_name

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 2018-03-31
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 2021-11-29
      • 2020-04-05
      • 1970-01-01
      相关资源
      最近更新 更多