Could not resolve MissingObjectChangeGenerator dependencies due to dependency cycle

Hi,


With Liquibase 3.0.1, generateChangeLog task failed with this error :


  1. liquibase.exception.UnexpectedLiquibaseException: Could not resolve MissingObjectChangeGenerator dependencies due to dependency cycle. Dependencies:
  2.     [Column,PrimaryKey,Table] -> ForeignKey -> [Index]

  3.         at liquibase.diff.output.changelog.DiffToChangeLog$DependencyGraph.sort(DiffToChangeLog.java:455)
  4.         at liquibase.diff.output.changelog.DiffToChangeLog.getOrderedOutputTypes(DiffToChangeLog.java:176)
  5.         at liquibase.diff.output.changelog.DiffToChangeLog.generateChangeSets(DiffToChangeLog.java:131)
  6.         at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:120)
  7.         at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:53)
  8.         at liquibase.integration.ant.GenerateChangeLogTask.executeWithLiquibaseClassloader(GenerateChangeLogTask.java:98)
  9.         at liquibase.integration.ant.BaseLiquibaseTask.execute(BaseLiquibaseTask.java:70)
  10.         at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
  11.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  12.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  13.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  14.         at java.lang.reflect.Method.invoke(Method.java:597)
  15.         at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
  16.         at org.apache.tools.ant.Task.perform(Task.java:348)
  17.         at org.apache.tools.ant.Target.execute(Target.java:392)
  18.         at org.apache.tools.ant.Target.performTasks(Target.java:413)
  19.         at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
  20.         at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
  21.         at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
  22.         at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
  23.         at org.apache.tools.ant.Main.runBuild(Main.java:811)
  24.         at org.apache.tools.ant.Main.startAnt(Main.java:217)
  25.         at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
  26.         at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)


This is my code :


  1.                 <generateChangeLog
  2. liquibase.exception.DatabaseException: java.sql.SQLException: ORA-00936: expression abse

  3.         at liquibase.snapshot.jvm.ColumnSnapshotGenerator.snapshotObject(ColumnSnapshotGenerator.java:58)
  4.         at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:56)
  5.         at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:42)
  6.         at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:75)
  7.         at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:144)
  8.         at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:107)
  9.         at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:94)
  10.         at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:124)
  11.         at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:107)
  12.         at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:94)
  13.         at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:144)
  14.         at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:107)
  15.         at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:94)
  16.         at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:124)
  17.         at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:107)
  18.         at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:94)
  19.         at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:144)
  20.         at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:107)
  21.         at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:94)
  22.         at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:144)
  23.         at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:157)
  24.         at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:107)
  25.         at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:94)
  26.         at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:125)
  27.         at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:118)
  28.         at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:106)
  29.         at liquibase.integration.ant.GenerateChangeLogTask.executeWithLiquibaseClassloader(GenerateChangeLogTask.java:90)
  30.         at liquibase.integration.ant.BaseLiquibaseTask.execute(BaseLiquibaseTask.java:70)
  31.         at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
  32.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  33.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  34.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  35.         at java.lang.reflect.Method.invoke(Method.java:597)
  36.         at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
  37.         at org.apache.tools.ant.Task.perform(Task.java:348)
  38.         at org.apache.tools.ant.Target.execute(Target.java:392)
  39.         at org.apache.tools.ant.Target.performTasks(Target.java:413)
  40.         at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
  41.         at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
  42.         at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
  43.         at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
  44.         at org.apache.tools.ant.Main.runBuild(Main.java:811)
  45.         at org.apache.tools.ant.Main.startAnt(Main.java:217)
  46.         at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
  47.         at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
  48. Caused by: java.sql.SQLException: ORA-00936: expression absente

  49.         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
  50.         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
  51.         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
  52.         at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
  53.         at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
  54.         at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:804)
  55.         at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1049)
  56.         at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:845)
  57.         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154)
  58.         at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1313)
  59.         at liquibase.snapshot.jvm.ColumnSnapshotGenerator.readColumn(ColumnSnapshotGenerator.java:137)
  60.         at liquibase.snapshot.jvm.ColumnSnapshotGenerator.snapshotObject(ColumnSnapshotGenerator.java:53)
  61.         ... 44 more



I work great with liquibase 2.0.


Can you help me please ?


Thanks !

I think, it’s because I can’t generate a changelog with only tables and columns. 


How can I export table and column without foreignkeys ?


Thanks for help :wink: