#1067 - ' bonusid'的默认值无效。我该如何解决这个错误?

时间:2014-08-13 05:12:02

标签: mysql sql database create-table

SQL查询:

CREATE TABLE bonus(
bonusid INT( 10 ) DEFAULT  '0' NOT NULL AUTO_INCREMENT ,
empid INT( 10 ) DEFAULT  '0' NOT NULL ,
datebonus DATE DEFAULT  '0000-00-00' NOT NULL ,
bonuspayment VARCHAR( 200 ) NOT NULL ,
note TEXT NOT NULL ,
PRIMARY KEY ( bonusid )
);

MySQL说:文档

  

1067 - 'bonusid'

的默认值无效

3 个答案:

答案 0 :(得分:3)

您不必为具有自动增量值的主键提供默认值。由于您已将bonusid定义为主键并已定义自动增量。因此,只要插入新记录,这将自动为bonusid创建新值。所以请尝试这样

CREATE TABLE bonus(
   bonusid INT( 10 ) NOT NULL AUTO_INCREMENT ,
   empid INT( 10 ) DEFAULT  '0' NOT NULL ,
   datebonus DATE DEFAULT  '0000-00-00' NOT NULL ,
   bonuspayment VARCHAR( 200 ) NOT NULL ,
   note TEXT NOT NULL ,
   PRIMARY KEY ( bonusid )
);

答案 1 :(得分:1)

主键不允许使用默认值,因为如果您使用默认值到主键,那么某些时候将记录插入相同的主键并且不允许主键在此列中插入相同的值。

检查这个

CREATE TABLE bonus(
bonusid INT( 10 )  AUTO_INCREMENT ,
empid INT( 10 ) DEFAULT  '0' NOT NULL ,
datebonus DATE DEFAULT  '0000-00-00' NOT NULL ,
bonuspayment VARCHAR( 200 ) NOT NULL ,
note TEXT NOT NULL ,
PRIMARY KEY ( bonusid )
);

如果您使用某个列作为主键,则默认不为null不用于声明此列。 请参阅此链接以获取自动增量

http://www.w3schools.com/sql/sql_autoincrement.asp

答案 2 :(得分:0)

  

即使 bonusid NOT NULL ,您也不必   指定 default value ,如果它具有特殊的 auto_increment 选项   当你createtable

尝试如下:

CREATE TABLE bonus(
bonusid INT( 10 ) NOT NULL AUTO_INCREMENT ,
empid INT( 10 ) DEFAULT  '0' NOT NULL ,
datebonus DATE DEFAULT  '0000-00-00' NOT NULL ,
bonuspayment VARCHAR( 200 ) NOT NULL ,
note TEXT NOT NULL ,
PRIMARY KEY ( bonusid )
);

<强> FIDDLE DEMO HERE