Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Error al insertar en mysql
#1
Hola , otra nueva necesidad que ha surgido es la de subir datos de tablas acces al servidor mysql , lo tenia funcionando hasta que al pasarlo a condiciones reales unas veces duplicaba un registro y otras sencillamente se lo saltaba , asi que decidi usar la sentencia INSERT into tabla (campos) VALUES ( valores) ON DUPLICATE KEY UPDATE (campo=valor) , esta sentencia funciona bien , con lo que me ahorra borrar el registro e insertarlo , creo que esto era mas rapido que tener que mirar si el registro existe y si existe actualizarlo .

  Bien , como la cosa funcionaba decido agrupar varias sentencias y pasarlas juntas para reducir el tiempo , y aqui es donde para mi sorpresa no funciona nada , me da un error #2014 - Commands out of sync. you can't run this command now , sabeis porque ocurre esto , sin embargo si vuelvo a lanzar los insert de uno en uno funciona perfecto , pero necesito velocidad en las actualizaciones o inserciones de datos , sabeis alguna forma de acelerar la insercion de datos en mysql?
Responder
#2
Hola. Es difícil determinar a grosso modo dónde radica el problema. Tendrías que reducir el problema al mínimo código posible para que lo puedas pegar acá, yo probarlo y así facilitar la depuración (y esto en general para todos los errores que tengas en programación).

Saludos
Responder
#3
He probado a insertar a mano en mysql el codigo que genero en python y la sentencia se inserta o se actualiza segun el caso pego aqui 3 lineas generadas con python

INSERT INTO `nueva`(`IdMaquina`, `Fecha`, `Hora`, `HoraCambio`, `Entradas`, `Salidas`, `modificado`) VALUES ('79','2017-01-14 00:00:00','1899-12-30 00:00:00','1899-12-30 09:55:00','79','79','2017-01-14 00:59:17') ON DUPLICATE KEY UPDATE `IdMaquina`='79', `Fecha`='2017-01-14 00:00:00', `Hora`='1899-12-30 00:00:00', `HoraCambio`='1899-12-30 09:55:00', `Entradas`='79', `Salidas`='79', `modificado`='2017-01-14 00:59:17';



INSERT INTO `nueva`(`IdMaquina`, `Fecha`, `Hora`, `HoraCambio`, `Entradas`, `Salidas`, `modificado`) VALUES ('81','2017-01-14 00:00:00','1899-12-30 00:00:00','1899-12-30 09:55:00','21','21','2017-01-14 00:54:40') ON DUPLICATE KEY UPDATE `IdMaquina`='81', `Fecha`='2017-01-14 00:00:00', `Hora`='1899-12-30 00:00:00', `HoraCambio`='1899-12-30 09:55:00', `Entradas`='21', `Salidas`='21', `modificado`='2017-01-14 00:54:40';

INSERT INTO `nueva`(`IdMaquina`, `Fecha`, `Hora`, `HoraCambio`, `Entradas`, `Salidas`, `modificado`) VALUES ('80','2017-01-14 00:00:00','1899-12-30 00:00:00','1899-12-30 09:55:00','122','122','2017-01-14 00:58:10') ON DUPLICATE KEY UPDATE `IdMaquina`='80', `Fecha`='2017-01-14 00:00:00', `Hora`='1899-12-30 00:00:00', `HoraCambio`='1899-12-30 09:55:00', `Entradas`='122', `Salidas`='122', `modificado`='2017-01-14 00:58:10';

La clave con tiene IdMaquina, Fecha , Hora y es unica
Responder
#4
Insisto en que deberías poder reducir el código que provoca el error a unas pocas líneas de Python para que sea más fácil depurarlo. Si la consulta a priori funciona, no podría decirte dónde está el error.

Saludos
Responder
#5
Repito , si lanzo linea a linea funciona pero tarda mucho , si agrupo 2 o mas lineas es cuando da el error de sincronizacion
Responder
#6
Desconozco cómo maneja internamente MySQL las consultas múltiples, y justamente tal vez se trate de un problema que exceda al lenguaje. No obstante, si tu intención es optimizar la ejecución de las consultas podés distribuirlas en múltiples hilos vía el módulo threading.

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)