使用Liquibase 3.2.2我们遇到liquibase diffs机制的问题,用于自动生成changelog以将数据库模式A转换为数据库模式B.
我们尝试在两个mysql数据库上使用Liquibase diff函数。在比较时,Liquibase会抛出NullPointerException。 我们的模式包含表,视图,外键和主键约束。将参考数据库与空数据库进行区分可以正常工作,并创建一个函数changeLog。
我们的旧数据模型中可能导致diff调用期间出现问题的原因是什么?
这里是例外堆栈跟踪:
Caused by: java.lang.NullPointerException
at liquibase.diff.output.changelog.core.ChangedIndexChangeGenerator.fixChanged(ChangedIndexChangeGenerator.java:72)
at liquibase.diff.output.changelog.ChangeGeneratorChain.fixChanged(ChangeGeneratorChain.java:118)
at liquibase.diff.output.changelog.ChangeGeneratorFactory.fixChanged(ChangeGeneratorFactory.java:122)
at liquibase.diff.output.changelog.DiffToChangeLog.generateChangeSets(DiffToChangeLog.java:167)
at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:125)
at liquibase.integration.ant.DiffDatabaseToChangeLogTask.executeWithLiquibaseClassloader(DiffDatabaseToChangeLogTask.java:47)
at liquibase.integration.ant.BaseLiquibaseTask.execute(BaseLiquibaseTask.java:82)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
... 10 more
您的意见非常感谢!
亲切的问候,
史蒂芬