将表移动到新的数据库迁移 Room Android
Posted
技术标签:
【中文标题】将表移动到新的数据库迁移 Room Android【英文标题】:Move tables to a new database migration 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)")
【问题讨论】:
【参考方案1】:您正在寻找的是 SQLite ATTACH DATABASE
语句。这允许您将附加数据库附加到当前连接,然后运行引用两者中的表的查询。有一些详细的文档here 显示了语法:
ATTACH DATABASE file_name AS database_name;
然后,您可以运行从两个数据库中引用表的查询,但请确保在引用附加数据库中的表时,您将其引用为
database_name.table_name
而不仅仅是table_name
。
【讨论】:
以上是关于将表移动到新的数据库迁移 Room Android的主要内容,如果未能解决你的问题,请参考以下文章