创建外键时遇到问题

时间:2018-10-22 05:48:00

标签: mysql

我正在尝试创建外键,以将我的'Major ID'列链接到我的Major表。

这是我的代码:

    CREATE TABLE students(
    `Student Number` INT NOT NULL PRIMARY KEY,
    `First Name` VARCHAR(255) NOT NULL,
    `Last Name` VARCHAR(255) NOT NULL,
    Address VARCHAR(255) NOT NULL,
    City VARCHAR(255) NOT NULL,
    State VARCHAR(255) NOT NULL,
    Zip INT NOT NULL,
    `Date of Birth` DATE NOT NULL,
    Major_ID INT,
    Advisor VARCHAR(255),
    `Enroll Date` DATE,
    `Total Credits Complete` INT,
    FOREIGN KEY(Major_ID) REFERENCES Major(Major_ID)
);

我得到的错误代码是:

  

错误
SQL查询:

     

创建表格的学生(
      Student Number INT NOT NULL主键,
      First Name VARCHAR(255)NOT NULL,
      Last Name VARCHAR(255)NOT NULL,
      地址VARCHAR(255)NOT NULL,
      城市VARCHAR(255)非空,
      状态VARCHAR(255)NOT NULL,
      邮编INT NOT NULL,
      Date of Birth日期不为空,
      Major_ID INT,
      顾问VARCHAR(255),
      Enroll Date日期,
      Total Credits Complete INT,
      FOREIGN KEY(Major_ID)参考Major(Major_ID))
MySQL说:

     

* 1005-无法创建表cmp255students(错误号:150“外键约束格式不正确”)(详细信息……)


我使用W3School作为如何制作外键的参考,但是由于某些原因,我的键不起作用。


如果有人可以让我知道我做错了什么,我将不胜感激。谢谢。


我的主要表格结构是

create table Major(
   Major_ID int);

2 个答案:

答案 0 :(得分:0)

在定义外键时,您需要在MySQL(以及几乎所有其他关系数据库)中进行一些处理,其中列出了我在过去两周中遇到的最常见的一些事情。年。

  1. 整数类型的大小和符号必须相同。字符串类型的长度不必相同。

  2. 在包含用于外键约束的字符串列的表上不允许进行字符集转换-这是在启用foreign key checks

  3. 父表和子表(引用表和被引用表)应具有相同的存储引擎。

我从MySQL官方文档中列出了这些内容。您可以在此处了解有关外键约束的更多信息-https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html

答案 1 :(得分:0)

CREATE TABLE students(
    `Student Number` INT NOT NULL PRIMARY KEY,
    `First Name` VARCHAR(255) NOT NULL,
    `Last Name` VARCHAR(255) NOT NULL,
    Address VARCHAR(255) NOT NULL,
    City VARCHAR(255) NOT NULL,
    State VARCHAR(255) NOT NULL,
    Zip INT NOT NULL,
    `Date of Birth` DATE NOT NULL,
    `Major ID` INT REFERENCES Major(`Major ID`),
    Advisor VARCHAR(255),
    `Enroll Date` DATE,
    `Total Credits Complete` INT
);