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

Dav*_*ave 14 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
Run Code Online (Sandbox Code Playgroud)

它运行正常,并生成输出文件.但输出文件只包含:

<?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"/>
Run Code Online (Sandbox Code Playgroud)

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

我错过了什么?


EDITS

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

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

Mar*_*iko 9

只需使用--urlZNK这样的标志指定数据库名称:

  --url="jdbc:mysql://mysql.mysite.com/database_name_here"
Run Code Online (Sandbox Code Playgroud)


Nar*_*mha 5

在为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   
Run Code Online (Sandbox Code Playgroud)