[RESOLVIDO] Erro 1215 FOREIGN KEY

3 respostas
bancojava
B

Olá, estou tentando criar uma FOREIGN KEY e ela me retorna o erro 1215, eu criei a mesma tabela ONTEM com o mesmo código e não tinha dado erro!!! não sei o que posso ter feito… teria como alguém em ajudar?

Tabela Pessoa:

CREATE TABLE IF NOT EXISTS tb_Pessoa

(

id_Pessoa INT NOT NULL AUTO_INCREMENT,

nome VARCHAR(100),

ra CHAR(14),

cpf VARCHAR(11),

rg VARCHAR(9),

id_Estado INT NOT NULL,

id_Municipio INT NOT NULL,

dta_Cadastro DATE,

dta_Nascimento DATE,

id_Estado_Nascimento INT NOT NULL,

id_Municipio_Nascimento INT NOT NULL,

gemeo CHAR(1),

id_Pessoa_Gemeo INT,

tipo_Cadastro CHAR(1) NOT NULL,

ativo CHAR(1) NOT NULL,

CONSTRAINT tb_Pessoa_id_Pessoa_PK PRIMARY KEY (id_Pessoa),

CONSTRAINT tb_Pessoa_ra_UK UNIQUE (ra),

CONSTRAINT tb_Pessoa_cpf_UK UNIQUE (cpf),

CONSTRAINT tb_Pessoa_rg_UK UNIQUE (rg),

CONSTRAINT tb_Pessoa_id_Estado_FK FOREIGN KEY (id_Estado) REFERENCES tb_Estado (id_Estado)

);
tabela estado:

CREATE TABLE tb_Estado (

Id       INT          NOT NULL AUTO_INCREMENT,

CodigoUf INT          NOT NULL,

Nome     VARCHAR (50) NOT NULL,

Uf       CHAR 	 (2)  NOT NULL,

Regiao   INT	      NOT NULL,

PRIMARY KEY (Id)

);

3 Respostas

T

Faltou você dizer na sua pergunta qual banco está usando e qual a mensagem de erro completa, pois só dizendo o código do erro, nós temos que ter o trabalho de procurar esse erro pra tentar te ajudar.

Dito isso, a sua chave estrangeira referencia o campo id_Estado:

CONSTRAINT tb_Pessoa_id_Estado_FK FOREIGN KEY (id_Estado) REFERENCES tb_Estado (id_Estado)

Mas esse campo não existe na tabela Estado, só o campo Id. Eu suponho que queira usar esse Id, então tente:

CONSTRAINT tb_Pessoa_id_Estado_FK FOREIGN KEY (id_Estado) REFERENCES tb_Estado (Id)

Abraço.

B

Estou utilizando o MySQL 5.7, a mensagem de erro é:
Error Code: 1215. Cannot add foreign key constraint

B

Obrigado, era este mesmo o erro, é que eu precisei resetar a tabela e esqueci de passar para o meu padrão. obrigado.

Criado 3 de novembro de 2018
Ultima resposta 3 de nov. de 2018
Respostas 3
Participantes 2