我正在将数据库从一个MySQL服务器移动到另一个MySQL服务器,但是在导入一个表时我最终得到了错误:
1067 - ' date'
的默认值无效
表SQL:
CREATE TABLE IF NOT EXISTS `log` (
`id` int(11) NOT NULL,
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`url` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=165 DEFAULT CHARSET=utf8
从5.6.21
导入MySQL版本5.5.47答案 0 :(得分:2)
在MySQL 5.5中,当列数据类型为DEFAULT CURRENT_TIMESTAMP
而不是TIMESTAMP
时,您只能使用DATETIME
。
例外情况是您可以指定
CURRENT_TIMESTAMP
作为TIMESTAMP
列的默认值。
在5.6中,他们将其扩展为DATETIME
,其MySQL 5.5 documentation说:
例外情况是您可以指定
CURRENT_TIMESTAMP
作为TIMESTAMP
和DATETIME
列的默认值。
因此,要么更改数据类型,要么删除默认值。
您应该始终警惕迁移到任何软件的旧版本,因为您的代码通常可能使用之前不存在的新功能。更新版本通常提供向后兼容性(至少对于少数版本而言),但旧版本无法处理新版本中未实现的功能。
答案 1 :(得分:-1)
CURRENT_TIMESTAMP
仅在TIMESTAMP
字段上可以接受。 DATETIME
字段必须保留为空的默认值,或者根本没有默认值。