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

[SOLUCIONADO] Reaciendo el proyecto anterior. Cannot add foreign key constraint?

Estas en el tema de Reaciendo el proyecto anterior. Cannot add foreign key constraint? en el foro de Mysql en Foros del Web. Disculpen la novateada, pero cómo soluciono el Cannot add foreign key constraint? Que significa eso? Revisé toda la sintaxys y parece estar todo bien. @import ...
  #1 (permalink)  
Antiguo 21/11/2014, 06:46
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 9 años, 8 meses
Puntos: 0
Reaciendo el proyecto anterior. Cannot add foreign key constraint?

Disculpen la novateada, pero cómo soluciono el Cannot add foreign key constraint? Que significa eso?
Revisé toda la sintaxys y parece estar todo bien.
Código SQL:
Ver original
  1. CREATE schema Piezas_y_Proovedores;
  2. USE Piezas_y_Proovedores;
  3.  
  4. CREATE TABLE PIEZAS (
  5.  
  6. codigo INT PRIMARY KEY,
  7. nombre VARCHAR(100)
  8.  
  9. );
  10.  
  11. CREATE TABLE PROOVEDORES (
  12.  
  13. id CHAR(4) PRIMARY KEY,
  14. nombre VARCHAR(100)
  15.  
  16. );
  17.  
  18. CREATE TABLE SUMINISTRA (
  19.  
  20. codigo_de_la_pieza INT,
  21. id_Proovedor CHAR(4),
  22. precio INT,
  23. FOREIGN KEY (codigo_de_la_pieza) REFERENCES PIEZAS(codigo),
  24. FOREIGN KEY (id_Proovedor) REFERENCES PROOVEDORES(id)
  25.  
  26. );
  27.  
  28. INSERT INTO PIEZAS
  29. (codigo,nombre)
  30. VALUES (1,'Tornillos'),
  31.        (2,'Tuercas'),
  32.        (3,'Arandelas'),
  33.        (4,'Destornillador'),
  34.        (5,'Taladro');
  35.  
  36. INSERT INTO PROOVEDORES
  37. (id,nombre)
  38. VALUES (1,'Unilever'),
  39.        (2,'TiendaLeon'),
  40.        (3,'ProTools');
  41.  
  42. INSERT INTO SUMINISTRA
  43. (codigo_de_la_pieza,id_Proovedor,precio)
  44. VALUES (1,1,300),
  45.        (2,2,200),
  46.        (3,3,500),
  47.        (4,4,350),
  48.        (5,5,600);
  49.  
  50. /*3.1 OBTENER EL NOMBRE DE TODAS LAS PIEZAS*/
  51.  
  52. SELECT PIEZAS.nombre
  53. FROM  PIEZAS;
  #2 (permalink)  
Antiguo 21/11/2014, 06:50
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, 7 meses
Puntos: 2658
Respuesta: Reaciendo el proyecto anterior. Cannot add foreign key constraint?

Tienes tres proveedores, no cinco, por lo que los últimos dos registros que insertas en "Suministra" tienen valores ilegales de id_proveedor:
Carga de Proveedores:
Código SQL:
Ver original
  1. INSERT INTO PROOVEDORES
  2. (id,nombre)
  3. VALUES (1,'Unilever'),
  4.        (2,'TiendaLeon'),
  5.        (3,'ProTools');

Carga de Suministra
Código SQL:
Ver original
  1. INSERT INTO SUMINISTRA
  2. (codigo_de_la_pieza,id_Proovedor,precio)
  3. VALUES (1,1,300),
  4.        (2,2,200),
  5.        (3,3,500),
  6.        (4,4,350), --Proveedor 4 NO EXISTE
  7.        (5,5,600); --Proveedor 5 NO EXISTE

La creación del proveedor y del producto deben ser anteriores a la carga de esa tabla.
__________________
¿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 21/11/2014, 06:53
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Reaciendo el proyecto anterior. Cannot add foreign key constraint?

Pero el error me lo tira cuando corro la linea 26 por ejemplo, to lo anterior lo venía compilando como un campeón pero me tira ese error cuando runneo la tabla SUMINISTRA.
  #4 (permalink)  
Antiguo 21/11/2014, 07:02
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, 7 meses
Puntos: 2658
Respuesta: Reaciendo el proyecto anterior. Cannot add foreign key constraint?

¿La tabla ya tiene datos al intentar correr esa query?
__________________
¿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 21/11/2014, 07:06
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Reaciendo el proyecto anterior. Cannot add foreign key constraint?

Aparentemente ya se solucionó. Gracias, me parece que era eso de los 5 proovedores.
  #6 (permalink)  
Antiguo 21/11/2014, 07:11
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, 7 meses
Puntos: 2658
Respuesta: Reaciendo el proyecto anterior. Cannot add foreign key constraint?

Para futuro:

- Antes de cargar una tabla relacional, que vincula otras dos tablas por FK, hay que verificar que todos los valores a ingresar ya existan en sus tablas referidas.

- Antes de crear una FK en una tabla que ya contiene datos, debe verificarse que los datos que existen sean consistentes con la tabla a que hará referencia. Es decir que el campo que será FK tiene valores que existen si o sí en su tabla origen.

Ese tipo de problemas son comunes en cualquiera de las dos situaciones, en especial si ee está modificando una tabla que ya está en uso productivo.
__________________
¿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: add, key, proyecto, select
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 10:54.