为什么MySQL允许将NOT NULL列更新为NULL?

kik*_*kik 6 mysql

我跑MySqlubuntu 10.10.我创建了一个名为'employee'3字段名称empno,名称和工资的表.插入了几个实体.在过程的中间,我想将薪水属性更改为'NOT NULL'.我改变了桌子

ALTER TABLE employee MODIFY salary int(10) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

查询已执行.我想用命令测试,

UPDATE employee SET salary=NULL;

Query OK, 15 rows affected, 15 warnings (0.06 sec)
Rows matched: 15  Changed: 15  Warnings: 15
Run Code Online (Sandbox Code Playgroud)

也发出警告 " (Code 1048): Column 'salary' cannot be null "(每一行重复)

但是当我看到我的桌子时,所有的工资都是Zeros('0').

在WINDOWS XP的MySql中,相同的查询会导致错误而不是警告

我检查了INNODB和MYISAM引擎,但结果相同.请帮我了解加工过程中发生的事情.

Qua*_*noi 12

您不能SQL_MODE对ubuntu安装设置严格.

问题

SET SQL_MODE='STRICT_ALL_TABLES'
Run Code Online (Sandbox Code Playgroud)

或添加

SQL_MODE='STRICT_ALL_TABLES'
Run Code Online (Sandbox Code Playgroud)

[mysqld]my.cnf的下面Ubuntu.