Liquibase generateChangeLog MissingObjectChangeGenerator
Liquibase generateChangeLog MissingObjectChangeGenerator
我正在使用 Liquibase 并尝试使用命令 liquibase generateChangeLog。
我使用的是正确的连接器和凭据。在从所有表中捕获信息后,调试跟踪在最后显示此错误。
DEBUG 14/09/17 16.30: liquibase: MissingObjectChangeGenerator type order: liquibase.structure.core.Catalog liquibase.structure.core.Schema liquibase.structure.core.Sequence liquibase.structure.core.StoredProcedure liquibase.structure.core.Table liquibase.structure.core.Column liquibase.structure.core.PrimaryKey liquibase.structure.core.UniqueConstraint liquibase.structure.core.Index liquibase.structure.core.ForeignKey liquibase.structure.core.View
Unexpected error running Liquibase: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
SEVERE 14/09/17 16.30: liquibase: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
liquibase.exception.LiquibaseException: liquibase.command.CommandExecutionException: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:265)
at liquibase.integration.commandline.Main.doMigration(Main.java:1011)
at liquibase.integration.commandline.Main.run(Main.java:188)
at liquibase.integration.commandline.Main.main(Main.java:103)
Caused by: liquibase.command.CommandExecutionException: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at liquibase.command.AbstractCommand.execute(AbstractCommand.java:13)
at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:263)
... 3 more
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at liquibase.change.ColumnConfig.<init>(ColumnConfig.java:119)
at liquibase.change.AddColumnConfig.<init>(AddColumnConfig.java:16)
at liquibase.diff.output.changelog.core.MissingIndexChangeGenerator.fixMissing(MissingIndexChangeGenerator.java:63)
at liquibase.diff.output.changelog.ChangeGeneratorChain.fixMissing(ChangeGeneratorChain.java:47)
at liquibase.diff.output.changelog.ChangeGeneratorFactory.fixMissing(ChangeGeneratorFactory.java:99)
at liquibase.diff.output.changelog.DiffToChangeLog.generateChangeSets(DiffToChangeLog.java:193)
at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:147)
at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:88)
at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:75)
at liquibase.command.GenerateChangeLogCommand.run(GenerateChangeLogCommand.java:54)
at liquibase.command.AbstractCommand.execute(AbstractCommand.java:8)
... 4 more
最后我终于找到了解决方案。
存在这些问题:
- 名称以空格分隔的列。
- 没有主键的表。
- 主键索引。
因此,消除空格、提供 PK 并删除无用的索引后,错误消失了,我可以继续了。
谢谢。
我正在使用 Liquibase 并尝试使用命令 liquibase generateChangeLog。 我使用的是正确的连接器和凭据。在从所有表中捕获信息后,调试跟踪在最后显示此错误。
DEBUG 14/09/17 16.30: liquibase: MissingObjectChangeGenerator type order: liquibase.structure.core.Catalog liquibase.structure.core.Schema liquibase.structure.core.Sequence liquibase.structure.core.StoredProcedure liquibase.structure.core.Table liquibase.structure.core.Column liquibase.structure.core.PrimaryKey liquibase.structure.core.UniqueConstraint liquibase.structure.core.Index liquibase.structure.core.ForeignKey liquibase.structure.core.View
Unexpected error running Liquibase: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
SEVERE 14/09/17 16.30: liquibase: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
liquibase.exception.LiquibaseException: liquibase.command.CommandExecutionException: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:265)
at liquibase.integration.commandline.Main.doMigration(Main.java:1011)
at liquibase.integration.commandline.Main.run(Main.java:188)
at liquibase.integration.commandline.Main.main(Main.java:103)
Caused by: liquibase.command.CommandExecutionException: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at liquibase.command.AbstractCommand.execute(AbstractCommand.java:13)
at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:263)
... 3 more
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at liquibase.change.ColumnConfig.<init>(ColumnConfig.java:119)
at liquibase.change.AddColumnConfig.<init>(AddColumnConfig.java:16)
at liquibase.diff.output.changelog.core.MissingIndexChangeGenerator.fixMissing(MissingIndexChangeGenerator.java:63)
at liquibase.diff.output.changelog.ChangeGeneratorChain.fixMissing(ChangeGeneratorChain.java:47)
at liquibase.diff.output.changelog.ChangeGeneratorFactory.fixMissing(ChangeGeneratorFactory.java:99)
at liquibase.diff.output.changelog.DiffToChangeLog.generateChangeSets(DiffToChangeLog.java:193)
at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:147)
at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:88)
at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:75)
at liquibase.command.GenerateChangeLogCommand.run(GenerateChangeLogCommand.java:54)
at liquibase.command.AbstractCommand.execute(AbstractCommand.java:8)
... 4 more
最后我终于找到了解决方案。
存在这些问题:
- 名称以空格分隔的列。
- 没有主键的表。
- 主键索引。
因此,消除空格、提供 PK 并删除无用的索引后,错误消失了,我可以继续了。
谢谢。