小编ddu*_*tra的帖子

Mysql 非空列接受空值

我在使用 Mysql not null 列时遇到问题。似乎我的 mysql 安装接受 NOT NULL 列的空值。

我的mysql版本是5.6.25-1~dotdeb+7.1(debian)。

以这张表为例:

CREATE TABLE `cities` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `state_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5562;
Run Code Online (Sandbox Code Playgroud)

当我插入这样的值时:

insert into cities(state_id) values (20);
Run Code Online (Sandbox Code Playgroud)

Mysql 会发出警告,但无论如何都会提交该值。这是警告。

12:51:43    insert into cities(state_id) values (20)    1 row(s) affected, 1 warning(s): 1364 Field 'name' doesn't have a default value 0.000 sec
Run Code Online (Sandbox Code Playgroud)

如果我删除唯一键 unique_city_in_state 我会得到相同的行为。

我还尝试使用 DEFAULT NULL 创建名称列,如下所示:

  `name` varchar(255) NOT NULL DEFAULT NULL,
Run Code Online (Sandbox Code Playgroud)

这会溢出一个错误,大致可以转换为(名称的默认值无效)。 …

mysql

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

mysql ×1