当前位置: 首页 > 知识库问答 >
问题:

如何通过从资产中销毁和重新加载数据库来迁移机房数据库

阳枫涟
2023-03-14

FallbacktoDestructiveMigration()清空了我的数据库,我不知道如何从我的文件夹Assets/Databases/中的数据库重新填充它。也许我可以在fallbackToDestructiveMigration发生时指定一个回调?

如果我添加了一个迁移方法,expected&found之间有太多的差异,再加上我不知道如何将某些列设置为“not null”。

共有1个答案

寿伟
2023-03-14

我也面临过同样的问题。您不必运行这些方法FallbackToDestructiveMigration()AddMigrations(),至少在前面提到的情况下是这样。只需使POI类与db表相同并检查符号,例如,错误消息中显示的POI表似乎有一个不同的字段,该字段在POI“can_skip”notNull=true中,而在db表“can_skip”notNull=false中,所以您所要做的就是删除注释@nonnull

@columninfo(name=“can_skip”)//@nonnull删除此私有int mcanskip;

之后,从模拟器或手机上卸载应用程序,然后重新构建,它就可以正常工作了。

帮助者:

RoomSQLiteDifferenceFinder:允许您确定db表与其类之间的差异。

 类似资料:
  • 并且我发现了基于数据库版本4的可能场景的迁移varargs。 我的问题是,假设我使用的是db v1的Room,当我的应用程序到达db v10时,我将不得不编写多少迁移方法? 在sqlite中,我们在中获得已安装应用程序的当前db版本,我们只需通过开关大小写而不使用break语句,以便满足所有db升级。

  • 已经创建了一个@Embedded类播放器。我想在其中添加ArrayList字段,该字段使用@TypeConverters,它在保存时将列表转换为Gson,在加载时将其转换为Gson。请告诉我如何在void migrate() 方法中请求将列表添加到Player类的现有实例中。 类保存: TypeConverter:

  • https://medium . com/Google-developers/understanding-migrations-with-room-f01e 04 b 07929上有一篇关于房间迁移的很棒的文章 然而,我仍然错过了房间中的“灾难”恢复机制(例如,当发生异常情况时,将清除并重新创建数据库的fallbackToDestructiveRecreationOnMigrationError(

  • 开发数据库由liquibase管理。生产数据库仍然为空。根据文档,我运行了来了解开发数据库和生产数据库之间的差异。该命令生成包含变更集列表的xml数据库变更日志。 我想下一步是使用差异更改日志,并将其应用于生产数据库。但是我在文档中找不到正确的maven命令来运行。

  • 问题内容: 我正在使用Java开发数据库迁移工具。该工具将数据库表及其数据复制到目标数据库。但是我希望它可以在不同的数据库上工作。从mysql复制并在derby等中创建。使用JDBC,我们可以收集有关表及其列的足够信息。但是我要问的是,是否可以使用sql free在Java上重新创建表。我的意思是不同的数据库具有不同的数据类型,有时它们在sql语法上也有所不同。那么JDBC或任何其他库(可以是开放

  • 在开发和维护一个数据库驱动的应用程序时, 数据库的结构会像代码一样不断演变。 例如,在开发应用程序的过程中,会增加一张新表且必须得加进来; 在应用程序被部署到生产环境后,需要建立一个索引来提高查询的性能等等。 因为一个数据库结构发生改变的时候源代码也经常会需要做出改变, Yii 提供了一个 数据库迁移 功能,该功能可以记录数据库的变化, 以便使数据库和源代码一起受版本控制。 如下的步骤向我们展示了