Liquibase-生成更改日志

时间:2019-10-19 10:17:40

标签: liquibase liquibase-hibernate liquibase-sql

我希望Liquibase从此数据库“测试”生成变更日志。有可能吗?

我已经有一个现有的数据库,其中包含表和数据。

jdbc:mysql://localhost:3306/testing

现在,我希望Liquibase从此数据库“测试”生成变更日志。有可能吗?

这是我的命令,但是不起作用。

liquibase --driver=com.mysql.jdbc.Driver --classpath=C:\mysql-connector-java-5.1.47.jar 
--changeLogFile=C:\db.changelog.xml --url="jdbc:mysql://localhost:3306/testing"
--username=root generateChangeLog

我没有使用任何密码。

该错误与--changeLogFile = C:\ db.changelog.xml

有关

我以为,Liquibase将引用我的数据库“测试”,并生成更改日志,其名称在文件夹C中的名称为“ db.changelog.xml”。

我错了哪一部分?我想念什么吗?

或者,也许Liquibase并非打算从现有数据库生成变更日志?

也许,Liquibase旨在仅从changelog生成数据库?反之亦然吗?

1 个答案:

答案 0 :(得分:0)

这是可能的。由于您正在写入c:驱动器根目录中的文件,因此可能会遇到麻烦。尝试使用c:\​​ temp \ changelog。

我的经验是liquibase可以递增工作。因此,如果您在数据库上运行该命令,它将生成一个文件,就好像必须在changelog文件中创建数据库中的所有内容一样(就像从一个完全空的数据库开始一样)。

如果您阅读the text on Liquibase's site regarding this command,则会显示:

  

当开始在现有数据库上使用Liquibase时,通常有一种有用的方法,特别是对于测试而言,有一种方法来生成更改日志以创建当前数据库架构。

这意味着,如果您对自己的dev数据库执行一次该命令,对一个新数据库运行结果(比如说test),在dev数据库上再次运行它,然后对您的测试数据库运行该文件,您将得到大量错误说明功能已经存在。

我认为这背后的想法是,您在changelog文件中创建新条目并针对所有数据库执行它们,而不是使用其他工具并使用liquibase作为增量。