Я только что провел пару часов, отслеживая эту ошибку. Учитывая следующий SQL:
DROP DATABASE IF EXISTS db;
CREATE DATABASE db;
CREATE TABLE db.tbl (t1 TIMESTAMP) ENGINE=INNODB;
SHOW CREATE TABLE db.tbl;
Последняя строка показывает мне:
'CREATE TABLE `tbl` (
`t1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1'
Откуда берется NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
? Я ничего не писал об этом, и я очень этого не хочу, и я потерял для слов, что MySQL сделает такую презумпцию.
Есть ли у меня какая-то безумная неясная настройка конфигурации, включенная/выключенная? Это поведение по умолчанию? Это ошибка? В любом случае, как заставить MySQL вести себя безопасно?