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