MySQL [something] 的默认值无效

MySQL invalid default value for [something]

我试图在我的 window MySQL 中恢复外部 MySQL 数据库。

mysql -u root -p test < C:\Users\myname\Downloads\db.sql

但是出现了这样的错误

ERROR 1067 (42000) at line 200: Invalid default value for 'VERSION_DATE'

有人说是字符编码问题,我又试了下

mysql -u root -p test < C:\Users\myname\Downloads\db.sql --default-character-set=utf8

但同样的错误。

这个 MySQL 恢复有什么问题。

这是第 200 行的开始。

CREATE TABLE `APP_EVENT_HISTORY` (
  `OWNER_ID` varchar(128) NOT NULL,
  `APP_ID` varchar(64) NOT NULL,
  `EVENT_ID` varchar(64) NOT NULL,
  `VERSION_ID` varchar(64) NOT NULL,
  `VERSION_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `SCRIPT` text,
  `DESCRIPTION` varchar(1024) DEFAULT NULL,
  `CREATE_USER_ID` varchar(128) NOT NULL,
  `CREATED_DATE` datetime NOT NULL,
  `UPDATE_USER_ID` varchar(128) DEFAULT NULL,
  `UPDATED_DATE` datetime DEFAULT NULL,
  PRIMARY KEY (`OWNER_ID`,`APP_ID`,`EVENT_ID`,`VERSION_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我发现这个 link 可能有用: Mysql datetime DEFAULT CURRENT_TIMESTAMP error

是的,这可能是由于 mysql 版本的差异(如果您在一个版本上备份并在另一个版本上恢复)。