Liquibase - 如何为现有数据库生成更改日志

时间:2012-09-16 19:07:27

标签: mysql liquibase

我正在尝试使用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"/>

我的数据库上没有创建表格(我期待用于跟踪的两个表格)。

我错过了什么?


EDITS

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

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

3 个答案:

答案 0 :(得分:9)

只需使用{em> ZNK 之类的--url标志指定数据库名称:

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

答案 1 :(得分:5)

在为postgresql数据库生成changelog xml时,我遇到了类似的问题。如果可以帮助某人,我会在这里发帖。     除了上述参数之外,我还必须指定<div> <h3 id='title'>Hello</h3> <div id='list'> <p>hello</p> </div> </div>。所以在mysql中你会有类似的选择:

最终命令如下:

--defaultSchemaName

答案 2 :(得分:0)

创建初始更改日志文件后,您应该执行&#39; changelogsync&#39; ,它将在您的数据库中创建这些表并更新它们,并记录您的更改日志的当前状态,因为已经运行了#39; (因此不会在下次更新中执行)