使用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

您的意见非常感谢!

亲切的问候,

史蒂芬