【问题标题】:MySQL update table with null but get warningsMySQL 使用 null 更新表但收到警告
【发布时间】:2016-06-30 17:54:43
【问题描述】:

我使用如下查询来更新表:

UPDATE table SET  c1=NULL WHERE c1=2 and Name REGEXP "ABC";

但查询后,我得到:

Query OK, 6 rows affected, 18 warnings (0,00 sec)

警告如下:

+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'N  ' |
| Warning | 1292 | Truncated incorrect DOUBLE value: 'N  ' |
| Warning | 1292 | Truncated incorrect DOUBLE value: 'N  ' |
...

虽然表中的“NULL”值似乎已正确更新,但为什么会出现警告?剂量重要吗?以及如何摆脱这些警告?

我使用的版本是:5.5.46-0ubuntu0.14.04.2 (Ubuntu)。

列的定义如下。更改了 6 行,但收到​​ 18 个警告:

mysql> describe table;
+-----------------+--------------+------+-----+---------+-------+
| Field           | Type         | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
...
| c1              | char(1)      | YES  |     | NULL    |       |
+-----------------+--------------+------+-----+---------+-------+

关于这个问题的更新:由于某种原因,几天后我运行相同的查询时,警告信息消失了。

【问题讨论】:

  • 可能你的c1字段本质上是NOT NULL
  • 你确定你给了 c1=NULL 而不是 c1='NULL'??
  • 能提供表格的结构吗?
  • @1000111,Vipin,我更新了表的定义,c1字段可以为NULL。
  • @Akhil,我确实使用 c1=NULL。

标签: mysql null


【解决方案1】:

此消息表示您正在尝试比较 WHERE 或 ON 子句中的数字和字符串。尝试关闭严格模式

由于警告计数是 18,所以我可以预测它正在比较 18 条记录或 18 次。

【讨论】:

    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    相关资源
    最近更新 更多