簡體   English   中英

錯誤代碼MySQL Workbench:1215無法添加外鍵約束

[英]Error Code MySQL Workbench: 1215 Cannot add foreign key constraint

CREATE TABLE Estudante (
Matrícula int,
RG int,
Nome varchar(20),
Email varchar(20),
Endereço_atual  varchar(20),
Telefone_atual varchar(20),
Endereço_permanente varchar(20),
Telefone_permanente varchar(20),
Data_de_nascimento date,
Sexo varchar(1),
Série varchar(3),
Grau varchar(10),
Curso varchar(20),
PRIMARY KEY(Matrícula,RG)
);

CREATE TABLE Professor (
Matrícula int,
RG int,
CPF int,
Nome varchar(10),
Classificação varchar(3),
Endereço varchar(20),
Email varchar(10),
PRIMARY KEY(Matrícula,RG,CPF)
);

CREATE TABLE Departamento (
Nome varchar(20),
Código_departamento int,
Matrícula_prof int,
Ramal varchar(10),
Campus varchar(10),
PRIMARY KEY(Nome,Código_departamento),
CONSTRAINT FK_MatriculaProf FOREIGN KEY(Matrícula_prof) REFERENCES Professor (Matrícula)
);

CREATE TABLE Disciplina (
Código int,
Departamento_resp int,
Nome varchar(20),
Descrição varchar(20),
Carga_horária varchar(10),
Duração varchar(10),
Nível varchar(10),
PRIMARY KEY(Código),
CONSTRAINT FK_DepartamentoResp FOREIGN KEY(Departamento_resp) REFERENCES Departamento (Código_departamento)
);

CREATE TABLE Turma (
ID_Turma int,
Disciplina int,
Matricula_Instrutor int,
Período_aplicação varchar(10),
Ano int,
PRIMARY KEY(ID_Turma),
CONSTRAINT FK_Disciplina FOREIGN KEY(Disciplina) REFERENCES Disciplina (Código),
CONSTRAINT FK_MatriculaInstrutor FOREIGN KEY(Matricula_Instrutor) REFERENCES Professor (Matrícula)
);

CREATE TABLE Relatório_Notas (
Matricula_Estudante int,
Turma int,
Disciplina int,
Notas int,
PRIMARY KEY(Matricula_Estudante),
CONSTRAINT FK_MatriculaEstudante FOREIGN KEY(Matricula_Estudante) REFERENCES Estudante (Matrícula,RG),
CONSTRAINT FK_Turma FOREIGN KEY(Turma) REFERENCES Turma (ID_Turma),
CONSTRAINT FK_Disciplina FOREIGN KEY(Disciplina) REFERENCES Disciplina (Código)
);

前三個表都可以,但是在“ Disciplina”表上卻收到此錯誤:錯誤代碼MySQL工作台:1215無法添加外鍵約束

您將外鍵定義為

CONSTRAINT FK_DepartamentoResp FOREIGN KEY(Departamento_resp) REFERENCES Departamento (Código_departamento)

但是在父表上沒有以Código_departamento列開頭的索引。

如果將Departamento上的主鍵從(Nome,Código_departamento)更改為(Código_departamento, Nome) (反向列順序),或在(Código_departamento)上添加額外的索引,則應該可以使用。

通常,收到“無法添加外鍵約束”錯誤后的“ SHOW WARNINGS顯示有關該問題的更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM