我希望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生成数据库?反之亦然吗?
答案 0 :(得分:0)
这是可能的。由于您正在写入c:驱动器根目录中的文件,因此可能会遇到麻烦。尝试使用c:\ temp \ changelog。
我的经验是liquibase可以递增工作。因此,如果您在数据库上运行该命令,它将生成一个文件,就好像必须在changelog文件中创建数据库中的所有内容一样(就像从一个完全空的数据库开始一样)。
如果您阅读the text on Liquibase's site regarding this command,则会显示:
当开始在现有数据库上使用Liquibase时,通常有一种有用的方法,特别是对于测试而言,有一种方法来生成更改日志以创建当前数据库架构。
这意味着,如果您对自己的dev数据库执行一次该命令,对一个新数据库运行结果(比如说test),在dev数据库上再次运行它,然后对您的测试数据库运行该文件,您将得到大量错误说明功能已经存在。
我认为这背后的想法是,您在changelog文件中创建新条目并针对所有数据库执行它们,而不是使用其他工具并使用liquibase作为增量。