kry*_*o88 5 spring h2 spring-boot jhipster
我试图将一个字段添加到我的实体作为CLOB.使用JHipster CLI时,添加它没有问题.
现在,当我尝试启动我的应用程序时,我从liquibase获得以下验证错误:
liquibase.exception.ValidationFailedException: Validation Failed:
1 change sets check sum
config/liquibase/changelog/20170221193921_xxxxxxxx.xml::20170221193921-1::jhipster was: 7:d8b3f42d8d4d523c7b14f93b4c7657c7 but is now: 7:a2a365179a0d231c2771ebd79f51b1fc
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下内容:
./mvnw liquibase:clearCheckSums
Run Code Online (Sandbox Code Playgroud)
结果是BUILD SUCCESS.
我也试过./mvnw liquibase:update和updateSQL,结果相同.
谁能告诉我JHipster的问题是什么?
pre*_*mar 11
当我们使用liquibase时,稍后发生的所有实体更改都应该作为单独的更改日志捕获(例如,更改表,例如添加新列).Jhipster cli似乎总是覆盖相应liquibase文件(通常是模式'config/liquibase/changelog/20180607110114_added_entity_Employee.xml')的实体(无论哪个更改).因此,实体liquibase文件的校验和会随着现在的新内容而更改.在您的数据库中,有一个表DATABASECHANGELOG,其中应用了所有changeLogs的存储,并且具有校验和数据.
现在,当您启动应用程序时,您将收到错误,因为您运行的最新liquibase changeLog修改实体的校验和与上次(数据库将为此以前版本的liquibase文件的校验和)不同.
mvn liquibase:clearCheckSums除非需要,否则大部分时间都不是正确的方法.这实际上清除了数据库中的所有校验和.你会忘记所发生的变化,而这些变化通常并非意图.liquibase的这些功能是有意义的,例如,当您想要回滚已应用的新更改时.如果您清除校验和并运行应用程序,它将计算新的校验和,如果没有足够的注意力,您将失去轨道并可能使您陷入困境.
适当的解决方案:
entity sub-generator或jdl importor 更改实体manual changes to your entities directly.'.._added_entity_...'.例如. 'config/liquibase/changelog/20180607110114_added_entity_Employee.xml'.mvn liquibase:diff.这将生成一个changeLog文件.手动检查一次并将其添加到liquibase的master.xml文件中.必须添加到主文件,因为liquibase会为所有changeLog引用此文件.总而言之,jhipster cli会覆盖实体liquibase文件.还原它们并运行mvn liquibase:diff以在新的changeLog中捕获对entites的新更改,而不是覆盖先前生成的liquibase文件.我们可以看到解决了校验和错误,并且还在liquibase中捕获了数据库更改.
参考资料:
- 如何处理liquibase和Jhipster数据库更新.
检查标题Database updates
尝试在数据库中执行以下查询: UPDATE DATABASECHANGELOG SET MD5SUM = null WHERE ID=' YOUR TABLE ID ';
在这种情况下,您的表 ID 似乎是 = 20170221193921-1。
| 归档时间: |
|
| 查看次数: |
6900 次 |
| 最近记录: |