【问题标题】:Liquibase - how to generate a changelog for existing databaseLiquibase - 如何为现有数据库生成变更日志
【发布时间】:2012-09-09 02:41:50
【问题描述】:

我正在尝试使用 liquibase 来生成 changeLog,首先是对我的数据库的当前状态进行快照。

环境详情:

  • 操作系统:Windows 7 32 x86,
  • Java JDK 1.7,
  • 来自 MySQL 的 mysql jdbc 驱动程序
  • liquibase 2.0.5.

我从命令行运行以下命令:

liquibase --driver=com.mysql.jdbc.Driver --changeLogFile=./structure.xml --url="jdbc:mysql://mysql.mysite.com" --username=<myuser> --password=<mypass> generateChangeLog

它运行良好,并生成了输出文件。但输出文件只包含:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd"/>

并且没有在我的数据库上创建任何表(我期待这两个表用于跟踪)。

我错过了什么?


编辑

是的,我指的是 liquibasechanlog 和 liquibasechangelock 表。我知道它们应该自动出现在数据库中。我的问题是为什么他们不在那里。是的,提供的用户有权执行此类任务。

而且它不是一个空的数据库。它有近 20 个表、10 个视图、数据...

【问题讨论】:

  • 用于跟踪的两个表是指liquibasechangelogliquibasechangeloglock?这些实际上并没有使用 liquibase.xml 进行管理,而是自动为您创建的。
  • 扩展克里斯托夫的问题。您的数据库不包含应用程序表,您在问为什么更改日志是空的? :-)
  • 如果我没有在连接 url --url="jdbc:mysql://mysql.mysite.com" 中指定数据库,我的行为与您描述的相同,但如果我添加数据库名称,它可以正常工作:--url="jdbc:mysql://mysql.mysite.com/dummy"

标签: mysql liquibase


【解决方案1】:

在为 postgresql 数据库生成 changelog xml 时,我遇到了类似的问题。如果它可以帮助某人,我会在这里发布。 除了上述参数之外,我还必须指定 --defaultSchemaName。所以在mysql中你会有类似的选择:

最终的命令将如下所示:

liquibase --driver=org.postgresql.Driver --changeLogFile=db.changelog.xml  --classpath=postgresql-9.4-1201-jdbc41.jar --url="jdbc:postgresql://localhost:5432/wms"  --username=<USER_NAME> --password=<PASSWD> --defaultSchemaName=<SCHEMA_NAME> generateChangeLog   

【讨论】:

    【解决方案2】:

    只需使用--url 标志指定数据库名称,如 ZNK 所说:

      --url="jdbc:mysql://mysql.mysite.com/database_name_here"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 2016-08-01
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多