【问题标题】:Can I ignore or suppress warnings in JDBC for MySQL?我可以忽略或抑制 JDBC for MySQL 中的警告吗?
【发布时间】:2010-08-28 18:47:37
【问题描述】:

我有一个INSERT INTO ... ON DUPLICATE KEY UPDATE ... 语句在mysql> 提示符中执行良好(但带有警告):

mysql> INSERT INTO ... ON DUPLICATE KEY UPDATE ... ;
Query OK, 2 rows affected, 2 warnings (0.00 sec)
Warning (Code 1364): Field 'x' doesn't have a default value

但是,当我尝试通过 JDBC 执行相同的语句时,警告显示为 SQLException 并且没有更新任何行:

java.sql.SQLException: Field 'x' doesn't have a default value
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3536)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3468)  
  at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1957)
  at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2107)
  at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648)
  at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2086)
  at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1365)

是否有 JDBC 或 mysql 连接器设置或命令来忽略或禁止这些警告?

我正在使用 MySQL Community Server 5.1.31 和 MySQL 连接器 5.1.8 和 Java 1.5.0_24。

【问题讨论】:

    标签: mysql jdbc mysql-error-1364


    【解决方案1】:

    您可以使用INSERT IGNORE 完全抑制这些。

    【讨论】:

    • (:这行得通。有趣,我以为我已经尝试过了。谢谢!
    • IGNORE 子句本身并不禁止警告 - 它只是禁止警告的来源。所以这不是针对实际问题的通用解决方案。我很失望 MySQL JDBC 驱动程序设计者没有使用SQLWarning,因为它本来打算被使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 2020-07-31
    • 2020-09-10
    • 2014-11-21
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多