如何在 spring 启动基于 maven 的项目中引入 liquibase
How to introduce liquibase in midle of spring boot maven based project
`我已经 运行ning 项目并试图在项目中间引入 liquibase。
这是 spring 基于 maven 的启动项目。
我正在按照步骤进行。
1.liquibase.properties
url=jdbc:postgresql://localhost:5432/cc
username=postgres
password=deadline123
driver=org.postgresql.Driver
outputChangeLogFile=src/main/resources/db/changelog/db.changelog-master.yaml
runOnChange=true
referenceUrl=jdbc:postgresql://localhost:5432/cc
referenceUsername=postgres
referencePassword=deadline123
changelogFile=src/main/resources/db/changelog/db.changelog-master.yaml
diffChangeLogFile=src/main/resources/diff.yaml
- 运行 命令生成当前数据库状态的变更日志
mvn liquibase:generateChangeLog
- 然后运行命令同步更新日志并在数据库中创建条目
mvn liquibase:changelogSync
- 正在启动我的应用程序,但它抛出的错误关系已经存在。我不明白为什么 liquibase 正在执行已经执行的变更集?我正在使用 liquibase 4.6.3
Liquibase 不会将更改与您的实际 table 进行比较,它只会跟踪已经执行的更改集(它会为名为 databasechangelog
的那个创建另一个 table) .
话虽如此,您必须确保 liquibase 以 'if anything fails, mark it as executed' 为前提条件执行您的变更集。可以这样实现:
<preconditions onFail="MARK_RAN">
<not>
<tableExists tableName="person"/>
</not>
</preconditions>
此示例以及更多信息可以在 https://www.liquibase.com/blog/adding-liquibase-on-an-existing-project
上找到
问题出在文件路径 src/main/resources/db/changelog/db.changelog-master.yaml
liquibase:changelogSync
在日志同步中添加文件路径,liquibae
在启动时实际上需要 classpath
classpath:/db/changelog/db.changelog-master.yaml
`我已经 运行ning 项目并试图在项目中间引入 liquibase。 这是 spring 基于 maven 的启动项目。
我正在按照步骤进行。
1.liquibase.properties
url=jdbc:postgresql://localhost:5432/cc
username=postgres
password=deadline123
driver=org.postgresql.Driver
outputChangeLogFile=src/main/resources/db/changelog/db.changelog-master.yaml
runOnChange=true
referenceUrl=jdbc:postgresql://localhost:5432/cc
referenceUsername=postgres
referencePassword=deadline123
changelogFile=src/main/resources/db/changelog/db.changelog-master.yaml
diffChangeLogFile=src/main/resources/diff.yaml
- 运行 命令生成当前数据库状态的变更日志
mvn liquibase:generateChangeLog
- 然后运行命令同步更新日志并在数据库中创建条目
mvn liquibase:changelogSync
- 正在启动我的应用程序,但它抛出的错误关系已经存在。我不明白为什么 liquibase 正在执行已经执行的变更集?我正在使用 liquibase 4.6.3
Liquibase 不会将更改与您的实际 table 进行比较,它只会跟踪已经执行的更改集(它会为名为 databasechangelog
的那个创建另一个 table) .
话虽如此,您必须确保 liquibase 以 'if anything fails, mark it as executed' 为前提条件执行您的变更集。可以这样实现:
<preconditions onFail="MARK_RAN">
<not>
<tableExists tableName="person"/>
</not>
</preconditions>
此示例以及更多信息可以在 https://www.liquibase.com/blog/adding-liquibase-on-an-existing-project
上找到问题出在文件路径 src/main/resources/db/changelog/db.changelog-master.yaml
liquibase:changelogSync
在日志同步中添加文件路径,liquibae
在启动时实际上需要 classpath
classpath:/db/changelog/db.changelog-master.yaml