我在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引擎但结果相同。 请帮我了解加工过程中发生的事情。
答案 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的结果。