2

我希望 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 的目的是仅从变更日志生成数据库?反之亦然?

4

1 回答 1

0

这个有可能。您可能会遇到麻烦,因为您正在写入 c: 驱动器根目录中的文件。请改用 c:\temp\changelog。

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

如果您阅读Liquibase 网站上有关此命令的文本,它会说:

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

这意味着如果你对你的开发数据库执行一次这个命令,对一个新的数据库运行结果(比如说测试),在你的开发数据库上再次运行它,然后对你的测试数据库运行那个文件,你将得到一个负载指出函数已经存在的错误。

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

于 2019-10-21T11:23:01.350 回答