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

foreign key constraint fails en una transaccion

Estas en el tema de foreign key constraint fails en una transaccion en el foro de Mysql en Foros del Web. Estoy haciendo una transaccion en donde ingreso un archivo en base de datos. El id de ese archivo debería ingresarse luego un una tabla de ...
  #1 (permalink)  
Antiguo 08/09/2011, 17:11
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 10 años, 11 meses
Puntos: 101
Pregunta foreign key constraint fails en una transaccion

Estoy haciendo una transaccion en donde ingreso un archivo en base de datos. El id de ese archivo debería ingresarse luego un una tabla de relación. Pero en ese momento obtengo una excepcion: Cannot add or update a child row: a foreign key constraint fails. Es que en el contexto de una transaccion ese id no existe aun? Que se hace en estos casos entonces?

Código MySQL:
Ver original
  1. INSERT INTO ClientsFiles ( clientf_id, user_id, clientf_filename, clientf_datetime ) VALUES ('', 16, 'ComisionesFrances201105.xls', NOW() )
  2.  
  3. obtengo el clientf_id (ultimo ingresado)
  4.  
  5. INSERT INTO Clients (client_CISid, client_fname, client_lname, client_doc_type, client_cuit, client_doc_number, client_bank_branch, client_num_acount, client_cbu, client_bank_pref) VALUES ('80400033','Sacari','Lidia','49','2147483647','93741388','106','0151318','0 ',1),('80400039','Semkina','Tatiana','49','2147483647','93891202','0','0','2650000500420019879769',1),('80400172','Dukhovska','Larysa','49','2147483647','93763108','0','0','0720037388000035893354',1)
  6.  
  7. etc...
  8.  
  9. INSERT INTO Clients_ClientsFiles (clientf_id, client_id) VALUES ('*** clientf_id ***', '4626'),('2', '4627'),('2', '4629')
  10.  
  11. etc...
  12.  
  13. Error Code: 1452
  14. Cannot add or update a child row: a foreign key constraint fails (`tiens`.`Clients_ClientsFiles`, CONSTRAINT `Clients_ClientsFiles_ibfk_2` FOREIGN KEY (`clientf_id`) REFERENCES `ClientsFiles` (`clientf_id`) ON DELETE CASCADE)
  #2 (permalink)  
Antiguo 08/09/2011, 17:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: foreign key constraint fails en una transaccion

¿Era ese entonces el problema en tu post anterior? ¿Problemas de integridad referencial, nomás?
__________________
¿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 08/09/2011, 18:30
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 10 años, 11 meses
Puntos: 101
Respuesta: foreign key constraint fails en una transaccion

No, son temas diferentes. Estoy con varias transacciones.
  #4 (permalink)  
Antiguo 08/09/2011, 19:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: foreign key constraint fails en una transaccion

Bueno, la respuesta es en realidad simple, pero hay que verla en el contexto de lo que haces: El INSERT que genera el error contiene un valor para una columna que es FK que no existe en la tabla de origen.
Es tan sencillo como eso, pero por empezar hay que ver de dónde saca ese dato, y por qué no existe en la 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)
  #5 (permalink)  
Antiguo 08/09/2011, 19:44
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 10 años, 11 meses
Puntos: 101
Respuesta: foreign key constraint fails en una transaccion

Te muestro. Para obtener el proximo ID, utilizo esta consulta:
Código MySQL:
Ver original
  1. SHOW TABLE STATUS LIKE 'ClientsFiles'

Luego, segun se explica aqui: http://blog.innerlogic.gr/mysql-get-...crement-value/ , obtengo el campo 'Auto_increment'.

Finalmente, inserto el pago, y comparo el ultimo id generado con el valor que antes obtuve (solo para mas seguridad. De cualquier manera, en un contexto de transaccion no espero que alguien pueda borrar un registro y traer problemas de id).

En fin, si ves mi post original, la primer consulta inserta un item en ClientsFiles, y es ese id autoincremental el que falla en la tabla de relacion. Por eso mi duda original, aun no resuelta.

Etiquetas: constraint, key, tabla, transacciones, 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 00:04.