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

时间:2012-05-22 13:15:03

标签: mysql

我在MySql中正在运行ubuntu 10.10。我创建了一个名为'employee'的表,其中包含3个字段名称 empno,名称和工资。插入了几个实体。在流程的中间,我想将薪水属性更改为'NOT NULL'。我改变了表格

ALTER TABLE employee MODIFY salary int(10) NOT NULL;

执行查询。我想通过使用命令进行测试,

UPDATE employee SET salary=NULL;

Query OK, 15 rows affected, 15 warnings (0.06 sec)
Rows matched: 15  Changed: 15  Warnings: 15

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

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

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

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

2 个答案:

答案 0 :(得分:12)

ubuntu安装时,您不能将SQL_MODE设置为严格。

问题

SET SQL_MODE='STRICT_ALL_TABLES'

或添加

SQL_MODE='STRICT_ALL_TABLES'
<{1>} [mysqld]下的my.cnf Ubuntu

答案 1 :(得分:3)

我没有看到问题,您将列设置为NOT NULL,(不允许使用NULL值)现在它不允许您将其设置为NULL,这将是预期的行为。

你的数据库中有0的原因是因为0是将int转换为int的结果。