2015-09-07 95 views
0

我嘗試關聯表MySQL,但我有這個錯誤錯誤與MySQL的關係外鍵

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

這是MySQL腳本

CREATE DATABASE prototipo; 
USE prototipo; 

CREATE TABLE tb_tipo_usuario(
id int not null, 
tipo varchar(30) not null, 
constraint PK_tb_tipo_usuario_id primary key(id) 
); 

CREATE TABLE tb_usuarios(
id_usuario int(5) zerofill not null auto_increment, 
usuario varchar(30) not null, 
clave varchar(30) not null, 
nombre varchar(30) not null, 
apellido varchar(30) not null, 
cedula varchar(30) not null, 
cargo varchar(40) not null, 
tipo_usuario int not null, 
fecha_registro date not null, 
constraint PK_tb_usuarios_id_usuario primary key(id_usuario), 
constraint fk_tb_usuarios_tipo_usuario foreign key(tipo_usuario) references tb_tipo_usuario(id) 

); 


CREATE TABLE tb_tipo_pollo(
id_tipo_pollo int(2) zerofill not null auto_increment, 
tipo_pollo varchar(30) not null, 
constraint pk_tb_tipo_pollo_id_tipo_pollo primary key(id_tipo_pollo) 
); 

create table tb_parvada(
id_parvada int(5) zerofill not null, 
cantidad int not null, 
constraint pk_tb_parvada_id_parvada primary key(id_parvada) 
); 


create table tb_entrada_parvada(
id_entrada_parvada int(5) zerofill not null auto_increment, 
tipo_pollo int not null, 
cantidad int not null, 
fecha_entrada date not null, 
fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
comentario varchar(500) null, 
id_usuario int not null, 
constraint pk_tb_entrada_parvada_id_entrada_pollo primary key(id_entrada_parvada), 
constraint fk_tb_entrada_parvada_tipo_pollo foreign key(tipo_pollo) references tb_tipo_pollo(id_tipo_pollo), 
constraint fk_tb_entrada_parvada_id_entrada_parvada foreign key(id_entrada_parvada) references tb_parvada(id_parvada), 
constraint fk_tb_entrada_parvada_id_usuario foreign key(id_usuario) references tb_usuarios(id_usuario) 
); 


create table tb_muerte_pollo(
id_muerte int(5) zerofill not null auto_increment, 
id_parvada int not null, 
cantidad int not null, 
fecha date, 
fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
motivo varchar(300), 
id_usuario int not null, 
constraint pk_tb_muerte_pollo primary key(id_muerte), 
constraint fk_tb_muerte_pollo foreign key(id_parvada) references tb_parvada(id_parvada), 
constraint fk_tb_muerte_pollo_id_usuario foreign key(id_usuario) references tb_usuarios(id_usuario) 
); 

錯誤是當我嘗試添加表tb_entrada_parvada或表tb_muerte_pollo我不知道如何修復此錯誤,只是在我刪除外鍵時工作

+0

你的外鍵的字段似乎已經定義爲引用的外鍵字段不同類型的。即嘗試將這些外鍵改爲int(5)類型以及這兩個表。 – ejuhjav

+0

它工作!對此,我真的非常感激。謝謝 – Heisenberg06

回答

0

參考表中列的和attributes應與當前表相同。對於許多列,您缺少ZeroFill。那就是爲什麼你會收到錯誤。請改變它。

create table tb_entrada_parvada(
id_entrada_parvada int(5) zerofill not null auto_increment, 
tipo_pollo int(2) zerofill not null, 
cantidad int not null, 
fecha_entrada date not null, 
fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
comentario varchar(500) null, 
id_usuario int(5) zerofill not null, 
constraint pk_tb_entrada_parvada_id_entrada_pollo primary key(id_entrada_parvada), 
constraint fk_tb_entrada_parvada_tipo_pollo foreign key(tipo_pollo) references tb_tipo_pollo(id_tipo_pollo), 
constraint fk_tb_entrada_parvada_id_entrada_parvada foreign key(id_entrada_parvada) references tb_parvada(id_parvada), 
constraint fk_tb_entrada_parvada_id_usuario foreign key(id_usuario) references tb_usuarios(id_usuario) 
); 

create table tb_muerte_pollo(
id_muerte int(5) zerofill not null auto_increment, 
id_parvada int zerofill not null, 
cantidad int not null, 
fecha date, 
fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
motivo varchar(300), 
id_usuario int zerofill not null, 
constraint pk_tb_muerte_pollo primary key(id_muerte), 
constraint fk_tb_muerte_pollo foreign key(id_parvada) references tb_parvada(id_parvada), 
constraint fk_tb_muerte_pollo_id_usuario foreign key(id_usuario) references tb_usuarios(id_usuario) 
); 

DEMO FIDDLE