mysql - 为什么我不能在 MySQL 中创建这个表?错误 1005 (HY000)

标签 mysql database

错误信息:

ERROR 1005 (HY000) at line __: Can't create table 'doanv.ENROLLED' (errno: 150) Bye

STUDENTCOURSEPROF 已成功创建。无法创建表 ENROLLEDTEACHING。我做错了什么?

CREATE TABLE STUDENT
(sID INTEGER PRIMARY KEY NOT NULL,
sFName VARCHAR(20),
sLName VARCHAR(20));

CREATE TABLE COURSE
(cID VARCHAR(20) PRIMARY KEY NOT NULL,
cName VARCHAR(20),
cr INTEGER);

CREATE TABLE PROF
(pID INTEGER PRIMARY KEY NOT NULL,
pFName VARCHAR(20),
pLName VARCHAR(20));

CREATE TABLE ENROLLED
(sID INTEGER NOT NULL,
cID VARCHAR(20) NOT NULL,
PRIMARY KEY (sID, cID),
FOREIGN KEY (sID) REFERENCES STUDENT,
FOREIGN KEY (cID) REFERENCES COURSE);

CREATE TABLE TEACHING
(pID INTEGER NOT NULL,
cID VARCHAR(20) NOT NULL,
PRIMARY KEY (pID, cID),
FOREIGN KEY (pID) REFERENCES PROF,
FOREIGN KEY (cID) REFERENCES COURSE);

最佳答案

在 MySQL 中,您需要指定所引用的列。 在 SQL 的其他一些实现中,您可以省略 (sID)(cID)

CREATE TABLE ENROLLED
(sID INTEGER NOT NULL,
cID VARCHAR(20) NOT NULL,
PRIMARY KEY (sID, cID),
FOREIGN KEY (sID) REFERENCES STUDENT(sID),
FOREIGN KEY (cID) REFERENCES COURSE(cID));

关于mysql - 为什么我不能在 MySQL 中创建这个表?错误 1005 (HY000),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35677285/

相关文章:

mysql - 获取按用户分组的总成本

Mysql查询获取一个表的行作为另一个表的列,列名来自第三个表

php - 使用php和mysql将数据插入数据库

php - 在执行基本 SELECT 操作时,您的 SQL 语法有错误

java - 如何让mysql中的列保存Java类

mysql - SQL 查询 : Joining two tables where entity of the first table has no, 或其他表中的多个条目

mysql - 如何编写按日期接收数据分组的查询?

java - Cassandra 中的特殊字符搜索

php - PHP提交表单数据到mysql时出现空白页

mysql - 从数据库中仅查找一个小于条件的条目