我正在尝试使用liquibase生成changeLog,从快照数据库的当前状态开始。
环境详情:
我从命令行运行以下命令:
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个视图,数据......
答案 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; (因此不会在下次更新中执行)