【问题标题】:Trouble Creating Foreign Key创建外键时遇到问题
【发布时间】:2019-03-26 03:46:39
【问题描述】:

我正在尝试创建一个外键,以便将我的 '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 NumberINT NOT NULL PRIMARY KEY,
First Name VARCHAR(255) NOT NULL,
Last Name VARCHAR(255) NOT NULL,
地址 VARCHAR(255) NOT NULL,
城市 VARCHAR(255) NOT NULL,
状态 VARCHAR(255) NOT NULL,
Zip INT NOT NULL,
Date of Birth DATE NOT NULL,
Major_ID INT,
顾问 VARCHAR(255),
Enroll Date DATE,
Total Credits Complete INT,
FOREIGN KEY(Major_ID) REFERENCES Major(Major_ID) )
MySQL 说:

*1005 - 无法创建表 cmp255.students (errno: 150 "外键约束格式不正确") (详情...)


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


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


我的主要表结构是

create table Major(
   Major_ID int);

【问题讨论】:

  • 能否提供您的主要表结构
  • @CholoBoy - 需要 Major 表的结构。
  • 忠告——永远使用 MySQL 的官方文档!
  • Major表中的列名也是Major_ID吗?
  • 在那里我为我的主要表添加了我的代码

标签: mysql


【解决方案1】:
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
);

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多