CREATE TABLE Child (
chil_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
child_fname VARCHAR(20) NOT NULL,
child_sname VARCHAR(20) NOT NULL,
child_dob DATE NOT NULL,
child_gender ENUM('M','F') DEFAULT 'M',
parent_id INT NOT NULL),
CONSTRAINT FOREIGN KEY (parent_id) references Parent (parent_id) )
ENGINE=InnoDB;
错误讯息:
您的sql语法中有错误。检查对应的手册 到您的MySQL服务器版本,以便在'CONSTRAINT附近使用正确的语法 FOREIGN KEY(parent_id)引用Parent(parent_id))ENGINE = InnoDB 在第8行
答案 0 :(得分:1)
问题出在这一行:
parent_id INT NOT NULL),
括号关闭列/约束声明,但是在之后包含一个约束,它会引发错误。删除该括号,您应该设置。正确的代码应该是这样的:
CREATE TABLE `Parent` (
`parent_id` INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`parent_id`)
) Engine=InnoDB;
CREATE TABLE Child (
chil_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
child_fname VARCHAR(20) NOT NULL,
child_sname VARCHAR(20) NOT NULL,
child_dob DATE NOT NULL,
child_gender ENUM('M','F') DEFAULT 'M',
parent_id INT NOT NULL,
CONSTRAINT FOREIGN KEY (parent_id) references Parent (parent_id) )
ENGINE=InnoDB;
我猜测Parent
的表结构,显然,因为我只需要一个表来实现parent_id
上的外键约束。您可以验证这是否适用于fiddle。
最后,你真的应该看看this answer标题为"的部分。 有关如何有条不紊地修复此类错误的更多信息",因为它可以让您更轻松地调试CREATE TABLE
语句(如建议before )。
答案 1 :(得分:-1)
你的括号太多了。
该行的最后一个括号
CONSTRAINT FOREIGN KEY (parent_id) references Parent (parent_id) )
是多余的。删除它,然后再试一次。