create table MYTABLE
{
MY_DATE int NOT NULL AUTO_INCREMENT,
NAME varchar(255) NOT NULL UNIQUE
};
INSERT INTO MYTABLE(NAME)values(jessica);
为什么我会收到此错误?
错误 1364 (HY000):字段“MY_DATE”没有默认值
来自docs http://dev.mysql.com/doc/refman/5.0/en/create-table.html:
每个表只能有一个 AUTO_INCRMENT 列,必须对其进行索引,并且不能具有 DEFAULT 值。
我想你会发现这一点,因为你没有索引MY_DATE
,它可能会默默地忽略AUTO_INCREMENT
选项(我不能保证,这只是假设,但文档中的注释仍然相关)。
我可以在上面看到的所有样本AUTO_INCREMENT
东西有(相当于):
PRIMARY KEY (MY_DATE)
或者,你may在严格 SQL 模式下运行。我见过的所有文档似乎都表明,在没有特定默认值的情况下,插入中的未列出列如果可以为空,则将获得 NULL,如果不可为空,则将获得类型默认值:
如果您不是在严格的 SQL 模式下运行,则任何未显式指定值的列都将设置为其默认(显式或隐式)值。例如,如果指定的列列表未命名表中的所有列,则未命名的列将设置为其默认值。默认值分配在第 10.1.4 节“数据类型默认值”中描述。
对于整数类型,默认值为 0(无论如何都应该启动自动增量)。
然而,在严格的 SQL 模式下(从here http://dev.mysql.com/doc/refman/5.5/en/data-type-defaults.html):
事务表出错,语句回滚。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)