我在项目开发阶段。因此,我现在基本上不需要迁移。我以前有第一个表,第二个表是新添加的表。我已经预装了db。下面是使用的代码。
@Database(
entities = [
FirstTable::class,
SecondTable::class
],
version = 1,
exportSchema = true
)
abstract class MyDatabase : RoomDatabase() {
companion object {
private const val databaseName = "my-db"
private const val prepackagedDB = "prepackaged-db"
fun buildDatabase(context: Context): MyDatabase {
return Room.databaseBuilder(context, MyDatabase::class.java, databaseName)
.createFromAsset(prepackagedDB)
.build()
}
}
}
我还在AndroidManifest中给出了android:allowBackup=“false”
。xml。我不想使用fallbackToDestructiveMigration()
,它也会清除我的预打包数据库。
我在emulator(API级别29)中卸载了该应用程序并运行了该应用程序。我得到了这个错误。
我不明白为什么重新安装会导致这个问题。有人能让我知道我做错了什么吗?
将新表(一个空表)包含在预打包的数据库中,然后它就可以正常工作了。
当我从Android Studio运行时是正常的 但当我关闭并重新打开应用程序时,我得到了错误 IllegalStateException:Room无法验证数据完整性。看起来您已经更改了架构,但忘记更新版本号。您可以通过增加版本号来解决这个问题。 我的第二张桌子
错误:查询有问题:[SQLITE_ERROR]SQL错误或缺少数据库(没有这样的表:任务) 显示了这个错误,我怎么可能修复它? 我正在学习这个教程
并且我发现了基于数据库版本4的可能场景的迁移varargs。 我的问题是,假设我使用的是db v1的Room,当我的应用程序到达db v10时,我将不得不编写多少迁移方法? 在sqlite中,我们在中获得已安装应用程序的当前db版本,我们只需通过开关大小写而不使用break语句,以便满足所有db升级。
我是新来的和我试图我的得到一个从它。我试图这样做的它与这是id但问题是我不知道如何返回目标从。 这就是<代码>刀 这是Repository类
https://medium . com/Google-developers/understanding-migrations-with-room-f01e 04 b 07929上有一篇关于房间迁移的很棒的文章 然而,我仍然错过了房间中的“灾难”恢复机制(例如,当发生异常情况时,将清除并重新创建数据库的fallbackToDestructiveRecreationOnMigrationError(
我正在尝试使用RxJava在后台线程上使用我的RoomDatabase。 我的DAO类: 我的实体类(为简洁起见省略了getter和setter方法): 最后,这里是我的MeasurementDatabase类: 在我的片段中,我试图在单击菜单项后插入背景线程: 最终测量数据库appDb= 我收到一个错误,说: 我的RxJava代码中缺少了什么,没有将进程放在后台线程上?