Мой хостинг-провайдер вчера обновил наш MySQL, и теперь значительная часть моего сайта не работает. После исследования я обнаружил, что любые команды UPDATE, которые указывают, что метка времени должна быть установлена в DEFAULT, не могут обновить метку времени. Это веб-сайт, который прекрасно работает уже 2 года. Новая версия MySQL - 10.2.23-MariaDB-log-cll-lve.
Например, используя следующую таблицу и заполняя ее некоторыми данными:
CREATE TABLE `NewTable` ( `NewTableKEY` INT NOT NULL AUTO_INCREMENT , `NewTableTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`NewTableKEY`));
INSERT INTO `NewTable` (`NewTableKEY`, `NewTableTime`) VALUES (NULL, DEFAULT);
Я пытаюсь обновить метку времени, используя DEFAULT:
UPDATE NewTable SET NewTableTime=DEFAULT;
В phpMyAdmin я получаю ответ:
0 rows affected. (Query took 0.0005 seconds.)
Я также попытался использовать NULL вместо значения по умолчанию:
UPDATE NewTable SET NewTableTime=NULL;
Использование NULL таким образом обновляет поле Timestamp до текущего времени. Я обнаружил, что использование DEFAULT в команде INSERT работает просто отлично. Я также обнаружил, что функция «при обновлении CURRENT_TIMESTAMP» работает, как и ожидалось.
Насколько я понял, использование DEFAULT в команде UPDATE было правильным синтаксисом (и он работал годами). Я использую неправильный синтаксис? Этот синтаксис устарел? Если да, то каков правильный синтаксис?