我有一个现有的生产数据库,以及一些具有一些架构差异的开发数据库。之前都没有使用Liquibase。我怎样才能实现以下目标:
答案 0 :(得分:2)
以下是我最终的结果($LIQUIBASE
扩展为为我正在使用的特定数据库配置的Liquibase命令行工具。
从生产数据库的当前状态生成基线更改日志:
$LIQUIBASE --url=$PROD_URL --changeLogFile=changeLog.xml generateChangeLog
将生产记录为与更改日志同步:
$LIQUIBASE --url=$PROD_URL --changeLogFile=changeLog.xml changeLogSync
计算开发和生产之间的差异,并将它们附加到更改日志文件:
$LIQUIBASE --url=$PROD_URL --referenceUrl=$DEV_URL --changeLogFile=changeLog.xml diffChangeLog
使生产与发展保持同步:
$LIQUIBASE --url=$PROD_URL --changeLogFile=changeLog.xml update
将开发记录为与更改日志同步:
$LIQUIBASE --url=$DEV_URL --changeLogFile=changeLog.xml changeLogSync
答案 1 :(得分:1)
您将首先使用generateChangelog命令为开发数据库生成更改日志,如下所示:http://www.liquibase.org/documentation/generating_changelogs.html
当您生成更改日志时,Liquibase还将创建并初始化它用于跟踪已应用于数据库的更改集的两个数据库表(DATABASECHANGELOG和DATABASECHANGELOGLOCK)。
接下来,您要对两个数据库进行区分,并使用diffChangelog命令将liquibase生成差异作为单独的更改日志: http://www.liquibase.org/documentation/diff.html
diff changelog可以按原样包含,也可以复制到现有的更改日志中。如果diff命令传递给现有的更改日志文件,则新的更改集将附加到文件的末尾。
最后,将更改日志部署到生产环境。
答案 2 :(得分:0)
本教程的5.3部分我想回答你的问题。
http://www.baeldung.com/liquibase-refactor-schema-of-java-app
这在java中使用maven,但我认为普通liquibase命令也可以这样做。