尝试生成ChangeLog时出现liquibase错误

时间:2019-05-17 18:25:29

标签: liquibase

在运行liquibase(3.6.3)并使用generateChangeLog命令(从命令行)时,我可以成功获取数据库中一个模式的更改日志,而不能成功获取另一模式的更改日志。

这是我所做的:

./liquibase-3.6.3/liquibase \
--driver=$DRIVER \
--classpath=$CLASSPATH \
--changeLogFile=$OUTFILE \
--url=$URL \
--username=$USERNAME \
--password=$PASSWORD \
--logLevel=debug \
--defaultSchemaName=${SCHEMA} \
generateChangeLog >$LOGFILE 2>&1

所有环境变量均已正确设置。我可以很好地连接到数据库,它适用于SCHEMA_A,但不适用于SCHEMA_B。错误输出如下:

Starting Liquibase at Fri, 17 May 2019 13:27:00 EDT (version 3.6.3 built at 2019-01-29 11:34:48)
Unexpected error running Liquibase:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
liquibase.exception.LiquibaseException:
liquibase.command.CommandExecutionException:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at
liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:279)
    at liquibase.integration.commandline.Main.doMigration(Main.java:1058)
    at liquibase.integration.commandline.Main.run(Main.java:199)
    at liquibase.integration.commandline.Main.main(Main.java:137)
Caused by: liquibase.command.CommandExecutionException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at liquibase.command.AbstractCommand.execute(AbstractCommand.java:24)
        at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:277)
        ... 3 common frames omitted
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.charAt(String.java:658)
[snip]

如您所见,我正在使用--logLevel = debug来运行它,并且没有记录正在运行的任何SQL。此外,如果使用以下命令运行它:

--diffTypes="tables"

我将在变更日志中获取表列表。但是,如果我使用以下命令运行它:

 --diffTypes="tables,columns" 

我收到与上述“超出范围的字符串索引”相同的错误。

该如何进一步调试以确定问题所在?

0 个答案:

没有答案