liquibase为DiffChangeLog返回假阳性结果

时间:2020-05-13 09:25:48

标签: postgresql liquibase

我将PostgreSQL 9.6从本地迁移到RDS Aurora PostgreSQL 11.4。

第一步,使用pg_dump导出数据库元数据(具有700多个模式)。

接下来,想验证我是否没有任何约束,对象以及源和数据库是否对齐。

将Liquibase与DiffChangeLog一起使用会产生误报结果,例如:

  • 在源上存在约束时从目标中删除约束。
  • 在源和目标中具有相同源代码的情况下创建视图。

这是单个模式的Liquibase命令。 我必须为数据库中的所有模式编写700多个脚本:

c:\> liquibase.bat ^
--changeLogFile=d:\users\compare\changelog.postgresql.sql ^
--outputFile=d:\users\compare\Database_diff.txt ^
--classpath="D:\Program Files\liquibase\postgresql-42.2.12.jar" ^
--driver=org.postgresql.Driver ^
--url=jdbc:postgresql://<source_endpoint>:5432/<source_database> ^
--username=<source_username> ^
--password=<source_password> ^
--defaultSchemaName=<source_schema> ^
--includeSchema=true ^
DiffChangeLog ^
--referenceUrl=jdbc:postgresql://<target_endpoint>:5432/<target_databas> ^
--referenceUsername=<target_username> ^
--referencePassword=<target_password> ^
--referenceDefaultSchemaName=<target_schema>

请告知如何避免假阳性结果。

1 个答案:

答案 0 :(得分:0)

您也可以尝试翻转网址和参考网址。 diffChangeLog将使用referenceUrl作为您希望数据库外观的参考或来源。并将使用url作为更改的目标。