所以我几乎查了这两天,我似乎无法弄清楚mysql不允许我添加外键是什么。当我运行包含外键的第二个表的代码时,出现以下错误:
#1072 - 表中不存在键列 'album'
我很确定我的代码中没有任何语法错误,因为我现在已经修改了几次。
我之前在 stakOVF 看到过同样的问题,但是这些问题的问题是非常明显的语法错误,但是这些问题中的解决方案与我的问题无关,没有解决我的问题。
这是我正在运行的代码,上面的错误已返回。提前致谢。
CREATE TABLE ‘Album’(
‘id’ INT AUTO_INCREMENT PRIMARY KEY ,
‘name’ VARCHAR( 35 ) NOT NULL
) ENGINE = InnoDB;
上面的代码运行没有问题,但是当我运行下面的代码时出现错误
CREATE TABLE ‘Picture’(
‘id_pk’ INT AUTO_INCREMENT PRIMARY KEY ,
‘album’ INT,
‘pictureURL’ VARCHAR( 270 ) NOT NULL ,
‘name’ VARCHAR( 35 ) NOT NULL ,
CONSTRAINT album_fk FOREIGN KEY ( album ) REFERENCES Album( id )
) ENGINE = InnoDB;
我摆弄了 CONSTRAINT 行,我也有以下形式的 FOREIGN KEY (album) REFERENCES Album(id),即没有前置约束。
谢谢大家,毕竟有一个语法错误,就像有人说的那样与有趣的引号有关,删除它们,就像一个魅力。非常感谢!
最佳答案
首先,您不需要任何引号,因为使用了任何保留字。
我尝试在不使用引号的情况下执行这些 sql 查询,结果非常有效。
CREATE TABLE Album(
id INT AUTO_INCREMENT PRIMARY KEY ,
name VARCHAR( 35 ) NOT NULL
) ENGINE = InnoDB;
CREATE TABLE Picture(
id_pk INT AUTO_INCREMENT PRIMARY KEY ,
album INT,
pictureURL VARCHAR( 270 ) NOT NULL ,
name VARCHAR( 35 ) NOT NULL ,
CONSTRAINT album_fk FOREIGN KEY ( album ) REFERENCES Album( id )
) ENGINE = InnoDB;
创建表“相册” 使用“Album”名称而不是 Album 创建一个表,使用“id”和“name”字段而不是 id 和 name 等等
关于mysql - 为什么 mySql 不让我声明外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363236/