【发布时间】:2015-05-02 20:38:30
【问题描述】:
在 mysql 数据插入时,我遇到了以下问题。此处电子邮件字段不能为空。在执行以下查询(查询 1 和 2)时,我们预计会出现错误。但是查询 1 报错,查询 2 报错。
表结构
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1
查询 1:
INSERT INTO `users` (`id`, `name`, `email`) VALUES (NULL, 'manu', NULL);
结果:-#1048 - 列“电子邮件”不能为空
查询 2:
INSERT INTO `users` (`id`, `name`, `email`)
VALUES (NULL, 'manu', NULL),(NULL, 'Jose', NULL);
结果:插入-2 行。
查询中是否有任何错误?任何想法将不胜感激。
【问题讨论】:
-
此行为在 SQL Fiddle 上不可重现。第二个查询产生与第一个相同的错误。
-
如果您创建一个名为“users2”且结构完全相同的新表,然后再次尝试运行查询,会发生什么情况?在运行每个查询后查看表中的最终数据会很有趣。我不明白为什么两个查询都不会失败。
-
@GordonLinoff,我们在服务器版本中得到了这个:5.5.37-0ubuntu0.12.04.1-log (Ubuntu)
-
您的 SQL 服务器不是在严格模式下运行吗?