执行MySQL建表语句触发ERROR 1064 (42000)错误的求助
解决MySQL ERROR 1064 (42000) 创建articles表的语法错误
错误原因
你写的SQL里,created_at字段的默认值用错了:DATETIME NOT NULL DEFAULT CURRENT_TIME。CURRENT_TIME返回的是仅含时分秒的TIME类型值,而DATETIME字段需要的是「日期+时间」的完整格式,类型不兼容直接触发了语法错误,和外键没关系。
修正后的SQL
把CURRENT_TIME换成CURRENT_TIMESTAMP(MySQL 5.6及以上版本支持DATETIME字段用这个作为默认值),调整格式后的完整语句:
CREATE TABLE articles ( `id` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(30) NOT NULL, `title` VARCHAR(30) NOT NULL, `description` VARCHAR(255), `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `users_id` INT(11) NOT NULL, PRIMARY KEY(`id`), FOREIGN KEY (`users_id`) REFERENCES `users` (`id`) ON DELETE CASCADE );
额外提醒
- 确认
users表已创建,且users.id是主键或拥有唯一索引,否则外键约束会创建失败(但这不是本次报错的原因)。 - 若你的MySQL版本低于5.6,DATETIME字段不支持直接设置CURRENT_TIMESTAMP为默认值,可改用TIMESTAMP类型,或者通过触发器实现默认值逻辑。
内容的提问来源于stack exchange,提问作者GuizmoU
相关产品推荐
相关产品推荐

