为什么时间戳字段不能获得默认值?

时间:2018-01-30 14:38:35

标签: mysql timestamp default mysql-5.7 sql-mode

我尝试以下转换表:
ALTER TABLE test MODIFY COLUMN a timestamp NULL DEFAULT '1970-01-01 00:00:01';

表结构是:

CREATE TABLE `test` (
 `a` timestamp NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我的sql_mode是:

STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE,
NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION

我得到的错误是:#1067 - Unknown error 1067 令我困惑的其他事情,为什么它没有显示实际错误?

1 个答案:

答案 0 :(得分:0)

看来,您的服务器已禁用ALLOW_INVALID_DATES

  

服务器要求月和日值合法,而不仅仅是   分别在1到12和1到31的范围内。有严格的模式   已禁用,无效日期,例如' 2004-04-31'转换为   ' 0000-00-00'并生成警告。 启用严格模式后,   无效日期会生成错误。要允许此类日期,请启用 ALLOW_INVALID_DATES