Invalid default value for timestamp field

MySQL 除错 Debug: Invalid default value for timestamp field

在异动资料库栏位时,发生 timestamp 栏位没办法将预设值设定为 ‘0000-00-00 00:00:00’,表示 资料库的模式(Server SQL Modes)NO_ZERO_DATE,所以才导致资料库的时间必须依定要指定时间。

检查目前所有的 SQL Mode

在资料库中下查询,查询目前的所有 sql_mode

SHOW VARIABLES LIKE 'sql_mode'
-- ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

确认一下资料库中的 sql_mode 有没有 NO_ZERO_IN_DATE

修正 NO_ZERO_IN_DATE 问题

1. 修改 MySQL 设定档

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

2. 加入 sql_mode 设定

可以将原本的设定全部设定进去,然后把 NO_ZERO_IN_DATE 移除掉即可

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

3. 重新启动 MySQL

sudo service mysql restart

参考资料