仅使用 databasechangelog 表生成 liquibase sql 文件

Posted

技术标签:

【中文标题】仅使用 databasechangelog 表生成 liquibase sql 文件【英文标题】:Generate liquibase sql file with only databasechangelog table 【发布时间】:2018-09-21 10:49:42 【问题描述】:

我想从我的 changelog 文件中生成一个 SQL 文件,该文件仅包含 databasechangelog 表,并在其中插入数据库的当前状态。在 liquibase 文档中有一篇文章 (http://www.liquibase.org/2015/07/without-a-connection.html),其中写到您可以将 outputLiquibaseSql 设置为 data_only,但在我的情况下它不起作用。我的属性文件如下所示:

driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
classpath: sqljdbc42.jar
url: offline:mssql?outputLiquibaseSql=data_only
changeLogFile: cl.xml
outputFile: output.sql

但是当我通过命令行使用updateSql 时,它会生成包含所有语句的SQL 文件,而不仅仅是databasechangelog 表和INSERTS。有什么解决办法吗?或者是否有另一种方法可以仅使用 databasechangelog 表 INSERTS 创建 SQL 文件? 我正在使用 liquibase 3.5.5。

【问题讨论】:

【参考方案1】:

对我来说,outputLiquibaseSql=truechangeLogSyncSQL 的组合有效。所以属性文件看起来像这样:

driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
classpath: sqljdbc42.jar
url: offline:mssql?outputLiquibaseSql=true
changeLogFile: cl.xml
outputFile: output.sql

然后我通过命令行使用了liquibase changeLogSyncSQL。然后 liquibase 生成了一个只有 databasechangelog 表语句的 SQL 文件。

【讨论】:

以上是关于仅使用 databasechangelog 表生成 liquibase sql 文件的主要内容,如果未能解决你的问题,请参考以下文章

Liquibase 正在尝试再次创建 databasechangelog 表

如果运行 spring boot 并让 liquibase 自动执行迁移,则 Liquibase databasechangelog 表存储相对路径

从 databasechangelog 读取 Liquibase 需要很长时间

Grails 应用程序在启动时卡住,因为 DATABASECHANGELOG 表被锁定

为啥 liquibase 总是使用自己的序列?

仅生成 Hibernate Envers 的审计表