我正在迁移一个使用Liquibase 3.4.1到Spring Boot 2.0.3的Spring应用程序 . 我还在使用Liquibase 3.4.1,尽管我也尝试过3.6.1 .
我在application.yml中添加了liquibase配置部分,但是当我启动应用程序时,DATABASECHANGELOG中的MD5SUM列对于现有变更集设置为null,并且应用程序尝试重新运行变更集并且失败 .
我为测试添加了一个新的变更集,并为它设置了MD5SUM值,但列LIQUIBASE的值为UNKNOWN而不是3.4.1 .
我没有在日志中看到任何相关内容 . 我也尝试在调试模式下运行应用程序 .
有人可以帮我解决一些我可以尝试的建议吗?没有Spring Boot的Liquibase 3.4.1应用程序运行正常 .
以下是我的相关application.yml配置:
spring:
datasource:
url: ${RDS_URL}
username: ${RDS_USERNAME}
password: ${RDS_PASSWORD}
jpa:
show-sql: ${HIBERNATE_SHOW_SQL}
hibernate:
ddl-auto: none
properties:
generate_statistics: true
globally_quoted_identifiers: true
format_sql: ${HIBERNATE_FORMAT_SQL}
liquibase:
enabled: true
change-log: classpath:/liquibase/changelog/db.changelog-master.xml
user: ${RDS_USERNAME}
password: ${RDS_PASSWORD}
url: ${RDS_URL}
3 回答
另一方面,Spring 1.5.X使用liquibase-core-3.5.3.jar 2.0.X使用liquibase-core-3.5.5.jar .
liquibase代码有不同之处 . 如果你查看LiquibaseProperties.java,你会在liquibase-core-3.5.5.jar上看到前缀=“spring.liquibase”,在liquibase-core-3.5.3.jar上看到前缀=“liquibase” .
现在来到你的意思 . 请查看yur liquibase版本并相应地使用前缀 . 如果您使用旧版本从liquibase中删除 spring .
我'm not sure exactly what I did, but now it'工作正常 . 我将更改日志值更改为change-log:classpath:liquibase / changelog / db.changelog-master.xml所以没有/在classpath之后我使用liquibase版本3.6.1,其中spring spring liquibase配置在前面有spring .
我在master文件中导入了其他文件 . 虽然我正在调试,但是我发现不是将导入的文件与db中的ran变换集匹配,而是匹配主文件,因此它尝试重新运行变更集,但现在一切正常 . 奇怪的 .
您可以在脚本上使用
<preConditions>
来执行脚本,否则您可以将更改集记录为MARK_RAN
.这是一个先决条件的例子: