2021年JHipster如何为实体修改字段并避免liquibase错误
JHipster项目实体修改及Liquibase校验和问题解决方案
正确的实体字段增删改操作流程
- 操作前确认当前项目代码无未提交的变更,本地数据库是最新迁移状态,应用可正常启动无报错。
- 修改JDL文件中对应实体的字段配置,完成后执行
jhipster import-jdl 你的JDL文件路径命令,JHipster会自动生成对应实体层、前端代码以及新增的Liquibase迁移脚本,不会改动历史已执行的迁移文件。 - 禁止手动修改
src/main/resources/config/liquibase/changelog目录下已经执行过的旧迁移文件,这类文件的内容改动是触发校验和匹配失败的核心原因。 - 开发环境下校验生成的新增迁移脚本内容符合预期后,直接启动应用即可,Liquibase会自动执行新脚本完成数据库字段更新。
- 生产环境下执行
./mvnw liquibase:diff(Maven项目)或./gradlew liquibaseDiff(Gradle项目)生成差异脚本,确认脚本逻辑正确后再部署运行。
已出现Liquibase校验和错误的修复方案
- 开发环境:直接清空Postgres对应数据库,重启应用即可,Liquibase会重新执行全量迁移脚本,自动修复校验和问题。
- 生产环境:执行
./mvnw liquibase:clearCheckSums(Maven项目)或./gradlew liquibaseClearChecksums(Gradle项目)清除数据库中存储的旧校验和记录,重启应用后Liquibase会重新计算所有已执行脚本的校验和存入数据库,不会重复执行旧迁移逻辑。
避免每次修改实体出错的规范
- 所有实体变更都通过修改JDL后重新导入的方式完成,不要直接修改实体代码和迁移文件。
- 每次导入JDL前提交当前所有代码变更,导入后对比文件改动,确认只有新增的迁移文件和实体/前端相关代码被修改。
- 开发阶段可在开发配置文件中添加
spring.liquibase.drop-first=true配置,每次启动应用自动重建数据库,从根源避免校验和冲突(该配置仅可用于开发环境,禁止写入生产配置)。 - 每次生成迁移脚本后先核对脚本内容,确认字段增删改逻辑和预期一致后再启动应用。
内容的提问来源于stack exchange,提问作者Uma Shankar
相关产品推荐
相关产品推荐

