创建外键时出现问题

e5nqia27  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(335)

我试图创建一个外键来链接我的 'Major ID' 列到我的 Major table。
这是我的密码:

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)不为空, Last Name varchar(255)不为空,
地址varchar(255)不为空,
city varchar(255)不为空,
state varchar(255)不为空,
zip int不为空, Date of Birth 日期不为空,
少校id int,
顾问varchar(255), Enroll Date 日期, Total Credits Complete 内景,
外键(major\u id)引用major(major\u id))
mysql说:

  • 1005-无法创建表 cmp255 . students (errno:150“外键约束格式不正确”)(详细信息…)

我用w3school作为如何制作外键的参考,但由于某些原因,我的不起作用。
如果有人能让我知道我做错了什么,我会非常感激的。谢谢。
我的主要表结构是

create table Major(
   Major_ID int);
gzszwxb4

gzszwxb41#

在定义外键时,在mysql(以及几乎所有其他关系数据库)中需要注意一些事情,我列出了在过去几年中遇到的最常见的事情。
整数类型的大小和符号必须相同。字符串类型的长度不必相同。
不允许在包含外键约束中使用的字符串列的表上进行字符集转换-这是 foreign key checks 已启用
父表和子表(引用表和被引用表)应具有相同的存储引擎。
我从mysql官方文档中列出了这些。您可以在此处阅读更多关于外键约束的信息-https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html

mxg2im7a

mxg2im7a2#

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
);

相关问题