按照these指令,在我现有的PostgreSQL数据库上执行generateChangeLog命令,结果文件不包含更改集标记。也许我误会了一些东西,但是我认为到目前为止对数据库的修改(创建表等)已经在这里总结了,这就是“使您看起来一直在使用Liquibase”的意义所在。 “选项。
如果这不是正确的假设,并且如果我直接对要描述为changeSet的数据库进行修改,那么该如何使用Liquibase命令行将这些变更集添加到文件中?
编辑:
这是逐步执行generateChangeLog和更新的示例:
./liquibase --driver=org.postgresql.Driver --classpath=postgresql-42.2.4.jar --changeLogFile=changelog1.xml --url="jdbc:postgresql://localhost:5432/my_database" --username=postgres --password=postgres --logLevel=debug generateChangeLog
输出:
此时,在我的本地PostgreSQL服务器上,my_database具有2个模式,一个名为my_schema(包含11个表,其中填充了我的应用程序正在使用的数据),另一个名为public。公众没有 table 。
运行liquibase更新:
./liquibase --driver=org.postgresql.Driver --classpath=postgresql-42.2.4.jar --changeLogFile=changelog1.xml --url="jdbc:postgresql://localhost:5432/my_database" --username=postgres --password=postgres --logLevel=debug update
返回值:
现在,在Public模式下,有2个表,databasechangelog和databasechangeloglock。 databasechangelog为空,但databasechangeloglock包含ID为1的一行和“locked boolean” col“FALSE”。
最佳答案
我意识到我没有指定正确的架构。我在数据库示例中有2个,“public”和“my_schema”,而Liquibase显然默认为public模式。
使用以下命令后,将成功生成更改集:
./liquibase --driver=org.postgresql.Driver --classpath=postgresql-42.2.4.jar --changeLogFile=changelog.xml --url="jdbc:postgresql://localhost:5432/my_database?currentSchema=my_schema" --username=postgres --password=postgres --liquibaseSchemaName=my_schema generateChangeLog
关于Liquibase generateChangeLog命令不会生成更改集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51431929/