SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'birthday'

出现此问题可能是sql_mode造成的,打开mysql console输入命令:

show variables like 'sql_mode' ;

或打开配置文件找到:

sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"

若其中包括 NO_ZERO_IN_DATE、NO_ZERO_DATE  将其去掉。

NO_ZERO_DATE:在非严格模式下,可以插入形如“0000-00-00 00:00:00”的非法日期,MySQL数据库仅抛出一个警告。而启用该选项后,MySQL数据库不允许插入零日期,插入零日期会抛出错误而非警告。

NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零。如“2011-00-01”和“2011-01-00”这样的格式是不允许的。采用日期或月份为零的格式时MySQL都会直接抛出错误而非警告。