我正在尝试设置一个DEFAULT值和type_id列的NOT NULL,这是instance表的外键,但是它在抱怨MySQL语法。
CREATE TABLE `type` (
`id` int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
`city` varchar(256)
);
ALTER TABLE instance ADD COLUMN type_id int(10) unsigned NOT NULL;
ALTER TABLE instance ADD CONSTRAINT instance_xbf1 DEFAULT 1
FOREIGN KEY (type_id)
REFERENCES type(id) int(10) unsigned NOT NULL;它在抱怨最后一条语句的语法:
错误:\“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法,在第1行”、"stdout":"“、"stdout_lines":[]、”警告“中使用接近”默认1\n外键(type_id)\nREFERENCES类型(Id) int(10) unsi‘)的正确语法。
发布于 2017-04-14 08:46:18
您试图在ADD CONSTRAINT语句中为外键执行太多的操作。
可以通过两种方式添加默认值。或者作为列定义的一部分:
ALTER TABLE instance ADD COLUMN type_id int(10) unsigned NOT NULL DEFAULT 1;或者在稍后的声明中:
ALTER TABLE instance ALTER type_id SET DEFAULT 1;在外键中,不能定义列的属性,如数据类型、空值、默认值等.
错误消息告诉您,它不希望DEFAULT关键字作为ADD CONSTRAINT的一部分。如果删除它,它就会抱怨数据类型& nullability部分:int(10) unsigned NOT NULL,因为它也不期望这些数据类型。但无论如何你已经定义好了。
因此,您的ADD CONSTRAINT可以简化为:
ALTER TABLE instance ADD CONSTRAINT instance_xbf1
FOREIGN KEY (type_id) REFERENCES type(id);https://stackoverflow.com/questions/43399427
复制相似问题