定义外键(MySQL)时出现问题
正在编写数据库类赋值的介绍,但在几个外键上遇到了问题。我做过一些外键,但偶尔会被难倒,弄不明白为什么它不起作用 这个例子是一个大学数据库,我有一节定义外键(MySQL)时出现问题,mysql,foreign-keys,Mysql,Foreign Keys,正在编写数据库类赋值的介绍,但在几个外键上遇到了问题。我做过一些外键,但偶尔会被难倒,弄不明白为什么它不起作用 这个例子是一个大学数据库,我有一节 describe section; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+----
describe section;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| course_id | varchar(7) | NO | PRI | | |
| sec_id | varchar(10) | NO | PRI | | |
| semester | varchar(10) | NO | PRI | | |
| year | int(11) | NO | PRI | 0 | |
| building | varchar(20) | YES | MUL | NULL | |
| room_no | varchar(5) | YES | | NULL | |
| time_slot_id | varchar(5) | YES | MUL | NULL | |
+--------------+-------------+------+-----+---------+-------+
我正在尝试创建一个takes数据库,并且能够为ID
和course\u ID
生成外键,但是我尝试的任何其他外键都不起作用
create table takes(
ID int,
course_id varchar(7),
sec_id varchar(10),
semester varchar(10),
year int,
grade int,
primary key (course_id, sec_id, semester, year),
foreign key (ID) references student(ID)
on delete cascade on update cascade,
foreign key (course_id) references section(course_id)
on delete cascade on update cascade
) engine = innodb;
到目前为止,它是有效的。
如果我尝试添加这个,它会给我errno:150
foreign key (sec_id)
references section(sec_id)
on delete cascade on update cascade
感谢您的帮助。我想我可能遗漏了外键的一些基本信息,因为它适用于
课程id
,但不适用于秒id
,这两个字段似乎完全相同?请确保两个字段的字符集
和排序规则
相同,即取数(秒id)
和节数(秒id)
请参阅此检查表:可能性:
部分
中的列sec_id
是否定义了索引
请参阅:
错误号:150
后,运行显示引擎INNODB状态
。它包含有关添加新外键失败原因的信息。