问题
SQL query:
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 said: Documentation
1067 - Invalid default value for 'bonusid'
回答1:
You don't have to give default value for a primary key with auto increment value. Since you have defined bonusid as a primary key and has defined auto increment.So this will automatically create a new value for bonusid whenever a new record is inserted.So try like this
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 )
);
回答2:
default value is not allowed to the primary key because of if you used default value to primary key then some time the record is inserted as same and primary key is not allowed to insert same value in this column.
check this
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 )
);
if you use some column as primary key then it is default not null is not use to declare this. refer this link for auto increment
http://www.w3schools.com/sql/sql_autoincrement.asp
回答3:
Even though the
bonusidcolumn isNOT NULL- you don't have to specify adefault valueif it has the specialauto_incrementoption when youcreatethetable.
Try As follows:
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
来源:https://stackoverflow.com/questions/25278484/1067-invalid-default-value-for-bonusid-how-can-i-fix-this-error