Liquibase - 生成更改日志

Liquibase - Generating Change Logs

我想要 Liquibase 从这个数据库 'testing' 生成一个更新日志。可能吗?

我已经有一个现有的数据库,里面有它的表和数据。

jdbc:mysql://localhost:3306/testing

现在,我想要 Liquibase 从这个数据库 'testing' 生成一个更新日志。可能吗?

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

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 将引用我的数据库 'testing',并生成更新日志,名称为 'db.changelog.xml' 在文件夹 C.

我哪一部分错了?我错过了什么吗?

或者,Liquibase 不打算从现有数据库生成变更日志?

或者,Liquibase 的目的是仅从更新日志生成数据库?反之亦然?

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

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

如果您阅读 the text on Liquibase's site regarding this command,它表示:

When starting to use Liquibase on an existing database, it is often useful, particularly for testing, to have a way to generate the change log to create the current database schema.

这意味着如果你对你的开发数据库执行一次这个命令,运行 对新数据库的结果(比方说测试),运行 它再次在你的开发数据库上,并且 运行 该文件针对您的测试数据库,您将收到一大堆错误,表明函数已经存在。

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