在现有derby数据库上使用liquibase generateChangeLog时出错

时间:2013-01-10 08:28:35

标签: derby liquibase

我正在使用liquibase为预先存在的derby数据库生成changeLog.xml。

liquibase --logLevel=debug --driver=org.apache.derby.jdbc.EmbeddedDriver
--classpath=/xxx/derby.jar --changeLogFile=/xxx/TestDb/db.changelog2.xml
--url="jdbc:derby:/xxx/TestDb/yyyy.db" --username= --password= generateChangeLog

liquibase报告了一个sql语法错误ERROR 42X01: Syntax error: Encountered "CONSTRAINTS" at line 1, column 8

有人可以提供解决此问题的任何指示吗?

以下是错误日志:

  

Liquibase Home未设置。 Liquibase主页:/ xxx / liquibase DEBUG 1/9/13   5:40 PM:liquibase:无法加载/访问Apache Derby驱动程序类   检查版本DEBUG 1/9/13 5:40 PM:liquibase:无法加载/访问   Apache Derby驱动程序类检查版本DEBUG 1/9/13 5:40   PM:liquibase:已连接到APP @ jdbc:derby:/xxx/TestDb/yyyy.db DEBUG   1/9/13 5:40 PM:liquibase:阅读APP @ APP的表格   jdbc:derby:/xxx/TestDb/yyyy.db ... INFO 1/9/13 5:40 PM:liquibase:   阅读APP @ jdbc的表:derby:/xxx/TestDb/yyyy.db ... DEBUG   1/9/13 5:40 PM:liquibase:阅读APP @的观点   jdbc:derby:/xxx/TestDb/yyyy.db ... INFO 1/9/13 5:40 PM:liquibase:   阅读APP @ jdbc的视图:derby:/xxx/TestDb/yyyy.db ... DEBUG   1/9/13 5:40 PM:liquibase:读取APP @的外键   jdbc:derby:/xxx/TestDb/yyyy.db ... INFO 1/9/13 5:40 PM:liquibase:   读取APP @ jdbc的外键:derby:/xxx/TestDb/yyyy.db ...   DEBUG 1/9/13 5:40 PM:liquibase:阅读APP @的主键   jdbc:derby:/xxx/TestDb/yyyy.db ... INFO 1/9/13 5:40 PM:liquibase:   读取APP @ jdbc的主键:derby:/xxx/TestDb/yyyy.db ...   DEBUG 1/9/13 5:40 PM:liquibase:为APP @读取专栏   jdbc:derby:/xxx/TestDb/yyyy.db ... INFO 1/9/13 5:40 PM:liquibase:   读取APP @ jdbc的列:derby:/xxx/TestDb/yyyy.db ... INFO   1/9/13 5:40 PM:liquibase:关闭德比连接:   jdbc:derby:/xxx/TestDb/yyyy.db; shutdown = true Liquibase更新失败:   语法错误:在第1行第8列遇到“CONSTRAINTS”。严重   1/9/13 5:40 PM:liquibase:语法错误:遇到“CONSTRAINTS”   第1行,第8列.liquibase.exception.DatabaseException:   java.sql.SQLSyntaxErrorException:语法错误:遇到   “限制因素”在第1栏第8栏。           at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.createSnapshot(JdbcDatabaseSnapshotGenerator.java:251)           at liquibase.snapshot.DatabaseSnapshotGeneratorFactory.createSnapshot(DatabaseSnapshotGeneratorFactory.java:69)           在liquibase.diff.Diff.compare(Diff.java:63)           在liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:145)           at liquibase.integration.commandline.Main.doMigration(Main.java:760)           at liquibase.integration.commandline.Main.main(Main.java:134)引起:java.sql.SQLSyntaxErrorException:语法错误:遇到   “限制因素”在第1栏第8栏。           在org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(未知   资源)           在org.apache.derby.impl.jdbc.Util.generateCsSQLException(未知来源)           在org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(未知   资源)           at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(未知   资源)           在org.apache.derby.impl.jdbc.EmbedConnection.handleException(未知   资源)           at org.apache.derby.impl.jdbc.ConnectionChild.handleException(未知   资源)           在org.apache.derby.impl.jdbc.EmbedStatement.execute(未知来源)           at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)           at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.isColumnAutoIncrement(JdbcDatabaseSnapshotGenerator.java:842)           at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.readColumns(JdbcDatabaseSnapshotGenerator.java:369)           at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.createSnapshot(JdbcDatabaseSnapshotGenerator.java:244)           ... 5更多引起:java.sql.SQLException:语法错误:在第1行第8列遇到“CONSTRAINTS”。           at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知   资源)           at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown   资源)           ... 16更多引起:ERROR 42X01:语法错误:在第1行第8列遇到“CONSTRAINTS”。           at org.apache.derby.iapi.error.StandardException.newException(未知   资源)           at org.apache.derby.impl.sql.compile.ParserImpl.parseStatement(未知   资源)           at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)           在org.apache.derby.impl.sql.GenericStatement.prepare(未知来源)           at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown)   资源)           ......还有10个

1 个答案:

答案 0 :(得分:1)

您的工具正在生成Derby发现无效的SQL,因此消息:

 Syntax error: Encountered "CONSTRAINTS" at line 1, column 8

如果可以使用JVM参数运行程序

  -Dderby.language.logStatementText=true

然后查看你的derby.log文件,你应该能够看到你的工具生成并发给Derby的确切SQL语句。

以下是关于derby.language.logStatementText的更多文档:http://db.apache.org/derby/docs/10.9/ref/rrefproper43517.html