如何在运行changeSet时告诉Liquibase忽略MySql警告?

时间:2017-03-08 20:04:10

标签: mysql warnings liquibase changeset mysql-5.5

我使用的是MySql 5.5.37和Liquibase 3.3。我有这个stateemnt,它在MySql termianl中运行,但有警告

mysql> update resource r set grade_id = convert(substring_index(substring_index(r.description, 'Grade ', -1), ' ', 1), unsigned integer) where r.description like '% Grade%' and CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(r.description, 'Grade ',-1),' ',1),UNSIGNED) > 0;
Query OK, 0 rows affected, 7 warnings (0.03 sec)
Rows matched: 1333  Changed: 0  Warnings: 7

我不关心这些警告,主要的是它跑了。但是,当我在LIquibase changeSet中运行相同的SQL时,changeSet无法执行错误(这反映了上面的警告)......

DEBUG 3/8/17 7:44 PM: liquibase: /tmp/deploywork/db.changelog-master.xml: db.changelog-8.0.xml::link-ws-resources-to-right-workshop-products-proper-grades::davea: Executing EXECUTE database command: update resource r set grade_id = convert(substring_index(substring_index(r.description, 'Grade ', -1), ' ', 1), unsigned integer) where r.description like '% Grade%' and CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(r.description, 'Grade ',-1),' ',1),UNSIGNED) > 0
SEVERE 3/8/17 7:44 PM: liquibase: /tmp/deploywork/db.changelog-master.xml: db.changelog-8.0.xml::link-ws-resources-to-right-workshop-products-proper-grades::davea: Change Set db.changelog-8.0.xml::link-ws-resources-to-right-workshop-products-proper-grades::davea failed.  Error: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect INTEGER value: ''
liquibase.exception.DatabaseException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect INTEGER value: ''
    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:1221)
    at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1204)
    at liquibase.changelog.ChangeSet.execute(ChangeSet.java:550)
    at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:43)
    at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:73)
    at liquibase.Liquibase.update(Liquibase.java:200)
    at liquibase.integration.commandline.Main.doMigration(Main.java:1032)
    at liquibase.integration.commandline.Main.run(Main.java:177)
    at liquibase.integration.commandline.Main.main(Main.java:96)
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect INTEGER value: ''
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4094)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2678)
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:894)
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:732)
    at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:314)

我如何告诉Liquibase忽略警告并执行声明,只有在出现真正的错误时才会失败?

0 个答案:

没有答案