mysql - 为什么 mySql 不让我声明外键?

标签 mysql sql database-design foreign-keys syntax-error

所以我几乎查了这两天,我似乎无法弄清楚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/

相关文章:

php - 加密题

java - 如何通过所需的视频 ID 在 Android 应用程序中显示 Youtube 视频,以便从服务器设置 ID,以便稍后更改 ID?

php - 如何自动求和列并保存到MySQL数据库?

mysql - 将国家分组并计数

database-design - 每 table 真的都需要PK吗?

mongodb - 在 mongodb 中存储赞成票/反对票

php - 配置数据的MySQL表结构

mysql - 门徒数据大师 : Table records cannot be shown or imported

postgreSQL中的SQL访问注释

mysql - SQL - 如何从 3 个表中查询(查询中查询?)?