我刚刚在 phpmyadmin 上将 int 必填字段更改为非必填字段(我勾选了空复选框)并将默认值设置为 NULL。
到目前为止一切顺利, 问题是当我尝试在已存在的记录上更改此值(来自 phpmyadmin)并删除该数字值时,我收到一条警告消息:
Affected 0 records.
Warning: #1366 Incorrect integer value: '' for column 'fktypeId' at row 1
并且它会将 0 放在字段值上。 我不想在该字段中添加任何值,既不是 0 也不是 NULL,只是空字段。
这会发生吗?预先感谢。
这绝对是一种操作非强制性 Int 字段的 phpmyadmin 方式。 我们只需勾选复选框即可!否则它总是将字段值变为 0
谢谢大家,我为那些提出这个“问题”的人发布了打印屏幕。
整数列只能存储整数值或 NULL。零长度字符串不能“存储”在整数列中。
如果为整数列提供了无法转换为整数值的字符串值,则警告是预期的行为。
如果您正在运行 SQL 语句,则可以使用关键字
NULL
例如:
UPDATE mytable SET some_int_col = NULL WHERE id = 42 ;
如果您使用某种“行编辑器”,则可能需要为
NULL
值选择一个复选框。
用SQL语句,比如这样:
UPDATE mytable SET some_int_col = '' WHERE id = 42 ;
文字字符串值(在本例中为零长度字符串)被分配给整数数据类型的列,MySQL 将隐式执行转换。在数字上下文中,零长度字符串的计算结果为零。
为了进行比较,请考虑不同字符串隐式转换为数字时的行为。
SELECT '' AS foo, '' + 0 AS foo_int
UNION ALL SELECT ' b' , ' b' + 0
UNION ALL SELECT '1A' , '1A' + 0
UNION ALL SELECT ' 23DE78', ' 23DE78' + 0
UNION ALL SELECT NULL , NULL + 0
退货
foo foo_int
-------- -------
0
b 0
1A 1
23DE78 23
(NULL) (NULL)
只是想将其添加到池中,即使它已经在之前的答案中部分提及:
我的查询是:
UPDATE myTable SET myColumn='NULL';
当它应该是:
UPDATE myTable SET myColumn=NULL;