作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 CentOS 6.4 和 MySQL 5.1 上使用以下代码在 MySQL 中创建了一个表
CREATE TABLE test (
t1 int(10) NOT NULL,
t2 varchar(12) NOT NULL,
PRIMARY KEY (t1),
UNIQUE KEY t2 (t2)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
但是查询成功执行后。desc 测试
的输出为
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| t1 | int(10) | NO | PRI | NULL | |
| t2 | varchar(12) | NO | UNI | NULL | |
+-------+-------------+------+-----+---------+-------+
它将 DEFAULT
显示为 NULL
而不是 NOT NULL
。
但结果是一样的。
在此之后如果a给出插入
INSERT INTO test VALUES ()
插入成功,但不应该是这样,因为我给出了 NULL 值,而 t1 的值为 0。由于值为 NULL,插入应该失败。
由于重复的键子句,后续插入会产生错误。请告诉我哪里出错了。
我在另一台装有 MySQL 5.5、Ubuntu 13.04 的机器上尝试了这个。
| Variable_name | Value |
+-------------------------+-------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-0ubuntu0.13.04.1 |
| version_comment | (Ubuntu) |
| version_compile_machine | x86_64 |
| version_compile_os | debian-linux-gnu |
+-------------------------+-------------------------+
最佳答案
您已写入,您的表有 2 个不可为空的字段,但您没有为它们指定默认值。 (在您的第三列输出中 - NULL - 您读到“否”)
我已经用默认值重写了您的脚本
CREATE TABLE test (
t1 int(10) NOT NULL DEFAULT 0,
t2 varchar(12) NOT NULL DEFAULT '',
PRIMARY KEY (t1),
UNIQUE KEY t2 (t2)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
关于MySQL 表 NOT NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18444092/
我是一名优秀的程序员,十分优秀!