【发布时间】:2019-10-21 00:15:00
【问题描述】:
我的托管服务提供商昨天更新了我们的 MySQL,现在我网站的重要部分无法正常运行。经过调查,我发现任何指定 Timestamp 应设置为 DEFAULT 的 UPDATE 命令都无法更新 Timestamp。这是一个已经完美运行了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 字段更新为当前时间。我发现在 INSERT 命令中使用 DEFAULT 效果很好。我还发现“on update CURRENT_TIMESTAMP”功能按预期工作。
据我了解,在 UPDATE 命令中使用 DEFAULT 是正确的语法(并且已经使用了多年)。我使用了错误的语法吗?是否已弃用此语法?如果是这样,正确的语法是什么?
【问题讨论】: