데이터베이스 클래스 소개 소개 및 일부 외래 키 문제 발생. 몇 가지 외래 키를 만들었지 만 지금 당장 난처한 상황에 처하게되고 왜 작동하지 않는지 알 수 없습니다.외래 키 정의 문제 (MySQL)
이 예는 대학 데이터베이스 내가 섹션
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 | |
+--------------+-------------+------+-----+---------+-------+
나는 데이터베이스 걸리는 만들려고 가지고 ID
및 course_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
을 생각하지 않았을까?
을 당신은'errno를 참조 후 : 150'이 실행'SHOW의 ENGINE INNODB STATUS'합니다. 여기에는 새로운 외래 키 추가에 실패한 이유에 대한 정보가 들어 있습니다. –