【发布时间】:2021-12-20 22:15:33
【问题描述】:
在我的应用程序室数据库是从 assets 文件夹创建的:
@Provides
@Singleton
fun provideIrregularVerbsDatabase(app: Application): IrregularVerbsDatabase =
Room.databaseBuilder(app, IrregularVerbsDatabase::class.java, IrregularVerbsConst.DATABASE_NAME)
.createFromAsset("database/irregular_verbs.db")
.fallbackToDestructiveMigration()
.build()
没关系,当我在运行时更改某些行的内容时,将数据添加到它完成工作的表中。但是如果我完全退出应用程序并再次进入,Room 将使用资产中的数据库文件再次创建我的数据库,因此在运行时插入的所有数据都将被删除。
有什么办法可以预防吗?
【问题讨论】:
-
删除
fallbackToDestructiveMigration()不用于生产;每次启动应用程序时它都会清除数据库 -
@Zain 数据库版本更改一次时是否清空数据库,然后不清空?还是总是不看数据库版本就清空数据库?
-
我不认为这是问题所在。
fallbackToDestructiveMigration()确实不适用于生产,但它不会在启动时破坏数据库而无需更改架构。 -
这是正确的@HenryTwist ..我没有表达好,我的意思是每次在android studio上运行应用程序;它将拥有一个全新的数据库。
-
没关系,在运行时,如果我更改某些行的内容,将数据添加到它的工作表中。 你确定吗?您如何确认更改/添加已被应用?我怀疑也许他们没有被应用。也许在进行更改/添加时使用应用检查并查看数据库(确保刷新)。
标签: android android-room