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

e: 1452 ¿Se puede agregar una llave foranea a una tabla con datos?

Estas en el tema de e: 1452 ¿Se puede agregar una llave foranea a una tabla con datos? en el foro de Mysql en Foros del Web. Hola comunidad, intento colocar una nueva clave foranea a mi tabla que ya tiene bastante registros. Para ello acabo de agregar un campo a la ...
  #1 (permalink)  
Antiguo 16/11/2012, 23:18
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 15 años
Puntos: 4
e: 1452 ¿Se puede agregar una llave foranea a una tabla con datos?

Hola comunidad, intento colocar una nueva clave foranea a mi tabla que ya tiene bastante registros.
Para ello acabo de agregar un campo a la tabla: base_id
Y luego toca agregar la relación con esto:

ALTER TABLE `afiliado`
ADD CONSTRAINT `base_id_refs_id_451245`
FOREIGN KEY (`base_id` )
REFERENCES `base` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `base_id_refs_id_451245` (`base_id` ASC) ;

AL ejecutar me sale el error 1452, cuando hay tantos datos y relaciones ya no puedo estar eleminando la tabla y crearlo de nuevo porque se altera todo.
Gracias por su ayuda y tiempo.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #2 (permalink)  
Antiguo 17/11/2012, 04:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: e: 1452 ¿Se puede agregar una llave foranea a una tabla con datos?

No es que no se pueda. El problema es que los datos que ahora tienen no son consistentes con la FK que quieres poner.
Es un problema muy común cuando ya las tablas están en produción.
Si estás agregando un campo a la tabla, y el campo es NOT NULL, generará un error porque una la FK no admitirá nulos... y todos los campos contendrán NULL al momento de crearlo.
SI estás agregando la restricción de FK a un campo que ya existe y que tiene datos, el problema puede ser que algunos de los datos que están en uno o más registros no existen en la tabla referida, o bien son NULL (lo que viene a ser lo mismo).
En el primer caso, podrías crear el campo como NULL, para evitarte conflictos. En el segundo... es una larga tarea de verificación de datos para revisar cuáles son inconsistentes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 17/11/2012 a las 09:29
  #3 (permalink)  
Antiguo 17/11/2012, 09:13
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 15 años
Puntos: 4
Respuesta: e: 1452 ¿Se puede agregar una llave foranea a una tabla con datos?

Gracias amigo, tenia usted razon bastaba con hacer que el campo sea null para ingresar la relacion FK.

Saludos.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com

Etiquetas: 1452, llave, registros, tabla, foreignkey, campos
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 06:24.