我正在尝试创建外键,以将我的'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-无法创建表
cmp255
。students
(错误号:150“外键约束格式不正确”)(详细信息……)
我使用W3School作为如何制作外键的参考,但是由于某些原因,我的键不起作用。
如果有人可以让我知道我做错了什么,我将不胜感激。谢谢。
我的主要表格结构是
create table Major(
Major_ID int);
答案 0 :(得分:0)
在定义外键时,您需要在MySQL(以及几乎所有其他关系数据库)中进行一些处理,其中列出了我在过去两周中遇到的最常见的一些事情。年。
整数类型的大小和符号必须相同。字符串类型的长度不必相同。
在包含用于外键约束的字符串列的表上不允许进行字符集转换-这是在启用foreign key checks
时
父表和子表(引用表和被引用表)应具有相同的存储引擎。
我从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
);