6

我跑MySql进去了ubuntu 10.10。我创建了一个名为empno、name 和salary'employee' 3 个字段名称的表。插入了几个实体。在过程中,我想将薪水属性更改为. 我将表格更改为'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 和 MISAM 引擎,但结果相同。请帮助我了解处理之外发生的情况。

4

2 回答 2

12

您一定没有SQL_MODE对 ubuntu 安装设置严格。

问题

SET SQL_MODE='STRICT_ALL_TABLES'

或添加

SQL_MODE='STRICT_ALL_TABLES'

[mysqld]到你my.cnfUbuntu

于 2012-05-22T13:40:46.803 回答
4

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

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

于 2012-05-22T13:18:07.487 回答