Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema FOREIGN KEY

Estas en el tema de Problema FOREIGN KEY en el foro de Mysql en Foros del Web. Hola a todos. Tengo un problema , intentando crear unas claves foraneas en mi base de datos. Primero , se que debo crear index a ...
  #1 (permalink)  
Antiguo 07/12/2011, 13:20
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Problema FOREIGN KEY

Hola a todos.

Tengo un problema , intentando crear unas claves foraneas en mi base de datos.

Primero , se que debo crear index a los campos de las tablas que quiero relacionar , para luego crear la foreign key. Lo hago de esta manera :

Código:
CREATE INDEX index1 ON musica.club (cod_gru);
CREATE INDEX index2 ON musica.grupo (cod);
ALTER TABLE musica.club 
ADD CONSTRAINT fk_prueba_1 FOREIGN KEY (cod_gru)
REFERENCES grupo(cod);
El problema es que , me crea los indices y hasta ahi todo bien , pero cuando lanzo la sentencia para que me haga la relacion del foreign key , no me apareze ningun error ni nada , pero no crea el foreign key.

Alguien sabe porque puede ser ?

Agradezco cualquier ayuda.
Gracias
  #2 (permalink)  
Antiguo 07/12/2011, 13:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema FOREIGN KEY

¿Estás usando tablas InnoDB o MyISAM?
¿Te aseguraste de que los campos sean exactamente del mismo tipo, rango y si son VARCHAR, la misma collation?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/12/2011, 13:53
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Problema FOREIGN KEY

Hola,

Veras , justo antes de que me respondieras , estaba leyendo una info , k decia k tenian k ser tablas de engine InnoDB , y acabo de cambiarle el engine aestas 2 tablas en question , por lo demas las tablas tienen los campos exactamente iguales.

he usado :

Código:
ALTER TABLE musica.club
Engine=InnoDB;
ALTER TABLE musica.grupo
Engine=InnoDB;
CREATE INDEX index1 ON musica.club (cod_gru);
CREATE INDEX index2 ON musica.grupo (cod);
ALTER TABLE musica.club 
ADD CONSTRAINT fk_prueba_1 FOREIGN KEY (cod_gru)
REFERENCES grupo(cod);
Pero cuando lo lanzo , resulta que me da un error que pone :

1005 - Can't create table 'musica.#sql-b34-4f (errno: 121)

Pero sin embargo , cuando luego voy al design de la tabla musica.club aparece el foreign key .

En musica.grupo , no aparece foreign key , supongo que realmente solo lo crea en una de las tablas la relacion verdad ?

Seria correcto asi ?

Gracias.
  #4 (permalink)  
Antiguo 07/12/2011, 14:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema FOREIGN KEY

Exacto.
Las FK son restricciones que se establecen en una tabla, haciendola depender de otra. Pero la tabla destino jamás posee una referencia inversa.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/12/2011, 14:41
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Problema FOREIGN KEY

Perfecto Gracias!

Respecto al error , ni caso supongo no ? Ya que en ningun momento estoy creando nada de tablas , supongo que sera algo ocasional , porque cuando luego ejecuto el resto de foreign keys no da ningun error.
  #6 (permalink)  
Antiguo 07/12/2011, 14:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema FOREIGN KEY

Respecto al error, me gustaría asegurarme de conflictos por tipos de dato.
¿Podrías postear el CREATE TABLE de ambas tablas?
Puedes recuperarlo usando
Código MySQL:
Ver original
  1. SHOW CREATE TABLE musica.club;
  2. SHOW CREATE TABLE musica.grupo;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, key, tabla, foreignkey
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:04.