gpt4 book ai didi

mysql - 定义外键时遇到问题 (MySQL)

转载 作者:行者123 更新时间:2023-11-30 00:35:49 24 4
gpt4 key购买 nike

正在研究数据库类分配简介,并在一些外键上遇到麻烦。我已经做了一些外键,但时不时地我会被难住,不明白为什么它不起作用。

这个例子是一个大学数据库,我有一个部分

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 | |
+--------------+-------------+------+-----+---------+-------+

我正在尝试创建一个需要数据库,并且能够为 IDcourse_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

感谢任何帮助。我想我可能遗漏了一些关于外键的基本知识,因为它适用于 course_id 但不适用于 sec_id,这似乎完全相同?

最佳答案

可能性:

  1. 数据类型(包括无符号数据类型)不匹配。
  2. 父字段未编入索引。

如果数据类型匹配,则可能您尚未在要定义外键关系的父列上定义索引。请检查表section中的列sec_id是否定义了任何索引。

引用:

关于mysql - 定义外键时遇到问题 (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com