2015-10-16 49 views
0

我試圖運行liquibase腳本Ubuntu的終端上,我得到錯誤:後在Ubuntu運行liquibase腳本得到錯誤,但在Windows做工精細

Unexpected error running Liquibase: Table 'database.batch_job_execution' doesn't exist [Failed SQL: CREATE INDEX JOB_START_STATUS ON database.batch_job_execution(STATUS, START_TIME)] 

的Ubuntu終端上運行腳本我用這個代碼:

export LIQUIBASE_HOME=/home/bok/Liquibase 
java -jar liquibase.jar \ 
     --driver=com.mysql.jdbc.Driver \ 
     --classpath=mysql-connector-java-5.1.36.jar \ 
     --changeLogFile="dbchangelog.xml" \ 
     --url="jdbc:mysql://localhost:3306/database" \ 
     --username=root \ 
     --password=password \ 
     update 

在Windows操作系統上,腳本工作正常。對於運行在Windows中,我從這個代碼創建*.bat文件:

set LIQUIBASE_HOME=D:\work\liquibase 
java -jar liquibase.jar 
    --logLevel=DEBUG 
    --driver=com.mysql.jdbc.Driver 
    --classpath=mysql-connector-java-5.1.36.jar 
    --changeLogFile="D:\dbchangelog.xml" 
    --url="jdbc:mysql://localhost:3306/database" 
    --username=root 
    --password=root 
    update 
pause 

我使用MySQL 5.6,Ubuntu的14.04和Windows 8.1,文件dbchangelog.xml是相同的。我如何在Ubuntu上運行成功的腳本?

編輯

所有堆棧跟蹤:

UTE database command: CREATE INDEX JOB_START_STATUS ON database.batch_job_execution(STATUS, START_TIME) 
SEVERE 16.10.15 18:08: liquibase: /home/bok/Liquibase/dbchangelog.xml: /home/bok/Liquibase/dbchangelog.xml::1358761283019-16::royu: Change Set /home/bok/Liquibase/dbchangelog.xml::1358761283019-16::royu failed. Error: Table 'database.batch_job_execution' doesn't exist [Failed SQL: CREATE INDEX JOB_START_STATUS ON database.batch_job_execution(STATUS, START_TIME)] 
liquibase.exception.DatabaseException: Table 'database.batch_job_execution' doesn't exist [Failed SQL: CREATE INDEX JOB_START_STATUS ON database.batch_job_execution(STATUS, START_TIME)] 
    at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:316) 
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55) 
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:122) 
    at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1247) 
    at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1230) 
    at liquibase.changelog.ChangeSet.execute(ChangeSet.java:548) 
    at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:51) 
    at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:73) 
    at liquibase.Liquibase.update(Liquibase.java:210) 
    at liquibase.Liquibase.update(Liquibase.java:190) 
    at liquibase.integration.commandline.Main.doMigration(Main.java:1096) 
    at liquibase.integration.commandline.Main.run(Main.java:180) 
    at liquibase.integration.commandline.Main.main(Main.java:99) 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'database.batch_job_execution' doesn't exist 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:400) 
    at com.mysql.jdbc.Util.getInstance(Util.java:383) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2541) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2499) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:844) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:748) 
    at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:314) 
    ... 12 more 
DEBUG 16.10.15 18:08: liquibase: /home/bok/Liquibase/dbchangelog.xml::1358761283019-16::royu: Release Database Lock 
DEBUG 16.10.15 18:08: liquibase: /home/bok/Liquibase/dbchangelog.xml::1358761283019-16::royu: Executing UPDATE database command: UPDATE database.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1 
INFO 16.10.15 18:08: liquibase: /home/bok/Liquibase/dbchangelog.xml::1358761283019-16::royu: Successfully released change log lock 
Unexpected error running Liquibase: Table 'database.batch_job_execution' doesn't exist [Failed SQL: CREATE INDEX JOB_START_STATUS ON database.batch_job_execution(STATUS, START_TIME)] 

SEVERE 16.10.15 18:08: liquibase: /home/bok/Liquibase/dbchangelog.xml::1358761283019-16::royu: Table 'database.batch_job_execution' doesn't exist [Failed SQL: CREATE INDEX JOB_START_STATUS ON database.batch_job_execution(STATUS, START_TIME)] 
liquibase.exception.MigrationFailedException: Migration failed for change set /home/bok/Liquibase/dbchangelog.xml::1358761283019-16::royu: 
    Reason: liquibase.exception.DatabaseException: Table 'database.batch_job_execution' doesn't exist [Failed SQL: CREATE INDEX JOB_START_STATUS ON database.batch_job_execution(STATUS, START_TIME)] 
    at liquibase.changelog.ChangeSet.execute(ChangeSet.java:584) 
    at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:51) 
    at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:73) 
    at liquibase.Liquibase.update(Liquibase.java:210) 
    at liquibase.Liquibase.update(Liquibase.java:190) 
    at liquibase.integration.commandline.Main.doMigration(Main.java:1096) 
    at liquibase.integration.commandline.Main.run(Main.java:180) 
    at liquibase.integration.commandline.Main.main(Main.java:99) 
Caused by: liquibase.exception.DatabaseException: Table 'database.batch_job_execution' doesn't exist [Failed SQL: CREATE INDEX JOB_START_STATUS ON database.batch_job_execution(STATUS, START_TIME)] 
    at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:316) 
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55) 
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:122) 
    at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1247) 
    at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1230) 
    at liquibase.changelog.ChangeSet.execute(ChangeSet.java:548) 
    ... 7 more 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'database.batch_job_execution' doesn't exist 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:400) 
    at com.mysql.jdbc.Util.getInstance(Util.java:383) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2541) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2499) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:844) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:748) 
    at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:314) 
    ... 12 more 

回答

0

從給出的信息,它不會出現這個問題是特定於平臺,而是變更日誌正試圖以創建索引不存在的表格。

+0

我添加stacktrace,顯示我編輯部分。 –

+0

我得到的錯誤表不存在,但**表存在** –

+0

我會檢查該表是否存在於您期望的並且該用戶具有權限的模式/數據庫/用戶中。 MySQL驅動程序報告它不存在的事實是一個非常強烈的跡象。你可以做的另一件事是使用updateSQL命令來生成SQL,然後檢查它是否有錯誤,或者只是手動運行它,看看你是否得到相同的結果。 – SteveDonie

相關問題