alter table users add open_id varchar(255) not null default 0 comment 'open_id' after email
当我使用以上sql时候报了一个错
ERROR 1067 (42000): Invalid default value for TIMESTAMP
对timestamp类型的字段如果不设置缺省值或没有标志not null的时候在创建表,或者修改表的字段时会报这个错误.
这是因为 sql_mode 中的NO_ZERO_DATE导致的,在strict mode 中不允许0000-00-00作为合法日期.
使用show variables like 'sql_mode'查看,结果列表会得到一条NO_ZERO_DATE,将上面的NO_ZERO_DATE改成ALLOW_INVALID_DATES
set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
上面设置的是临时变量,在重启mysql之后还会出现NO_ZERO_DATE