mysql Invalid default value for ‘create_date’ timestamp field

mysql在创建表的过程会遇到"mysql Invalid default value for 'create_date' timestamp field",这是因为sql_model中加入NO_ZERO_DATE模式。NO_ZERO_DATE
-在严格模式下,不允许“00000 -00-00”作为有效日期。您仍然可以使用IGNORE选项插入零日期。在非严格模式下,日期将被接受,但会生成一个警告。

解决方法

  1. 在当前的session中修改配置
    去掉严格模式的限制NO_ZERO_DATE

    SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
    SET SQL_MODE='ALLOW_INVALID_DATES';
  2. 修改mysql配置文件my.cnf,重启mysql

1)打开文件:/etc/mysql/mysql.conf.d/mysqld.cnf。
2)查找:sql_mode,它将在[mysqld]下的某个地方。
3)并将sql_mode设置为:
NO_ZERO_IN_DATE、ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
4)保存,然后重新启动mysql服务做:
sudo service mysql restart

参考资料

NO_ZERO_DATE

PHP代码lint工具:PHPMD
PHP的Zend Opcache配置