【发布时间】:2019-06-30 18:53:21
【问题描述】:
当我尝试创建一个包含 2 个外键的表时,我收到了 ERROR 1064 (42000)。它说我的语法错误,但我找不到任何错误。 我正在使用 MySQL 8.0 版
我只尝试了一个约束/没有第二个约束并且它有效。但是对于他们两个,我都会遇到错误。
这行得通:
CREATE TABLE IF NOT EXISTS Comment (
id INT NOT NULL AUTO_INCREMENT,
content VARCHAR(15) NOT NULL,
date_posted DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
user_id INT NOT NULL,
post_id INT NOT NULL,
PRIMARY KEY (id),
CONSTRAINT `fk_User_Comment`
FOREIGN KEY (user_id)
REFERENCES User (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
这不是:
CREATE TABLE IF NOT EXISTS Comment (
id INT NOT NULL AUTO_INCREMENT,
content VARCHAR(15) NOT NULL,
date_posted DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
user_id INT NOT NULL,
post_id INT NOT NULL,
PRIMARY KEY (id),
CONSTRAINT `fk_User_Comment`
FOREIGN KEY (user_id)
REFERENCES User (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION),
CONSTRAINT `fk_Post_Comment`
FOREIGN KEY (post_id)
REFERENCES Post (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
【问题讨论】:
-
完整的错误信息是什么?
-
In
CONSTRAINTfk_User_Comment` 外键 (user_id) 参考用户 (id) ON DELETE NO ACTION ON UPDATE NO ACTION),` 是您实际代码中的最后一个括号吗? -
就像@forpas 所说的正确语法之一是this
-
你是对的。谢谢!