Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

445
Visualizações
ER_LOCK_DEADLOCK llamado cuando no hay bloqueo

Registros que muestran que de vez en cuando se genera este error.

Estoy leyendo los documentos y es muy confuso porque no estamos bloqueando ninguna tabla para hacer inserciones y no tenemos transacciones más allá de las llamadas SQL individuales.

Entonces, ¿podría estar sucediendo esto porque nos estamos quedando sin el grupo de conexiones mySQL en Node? (Lo hemos configurado en algo así como 250 conexiones simultáneas).

Estoy tratando de averiguar cómo replicar esto, pero no tengo suerte.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Todas las consultas que no se ejecutan dentro de una transacción explícita se ejecutan en una transacción implícita que se confirma inmediatamente cuando finaliza la consulta o retrocede si ocurre un error... entonces, sí, está utilizando transacciones.

Los interbloqueos ocurren cuando al menos dos consultas están en proceso de adquirir bloqueos, y cada una de ellas tiene bloqueos de nivel de fila que adquirieron por casualidad en un orden tal que ahora cada una necesita otro bloqueo que tiene el otro, por lo que Estás "bloqueado". Existe una condición de espera infinita entre las consultas en ejecución. El servidor se da cuenta de esto.

El error no es tanto una falla como el servidor que dice: "Veo lo que hiciste, ahí... y, de nada, lo limpié por ti porque, de lo contrario, habrías esperado una eternidad".

Lo que no está viendo es que hay dos culpables, dos consultas diferentes que causaron el problema, pero solo uno de ellos es castigado. La consulta que haya realizado la menor cantidad de trabajo (ciertamente, este concepto es nebuloso) se eliminará con el error de interbloqueo, y la otra consulta continuará felizmente por su camino, sin tener idea de que fue el afortunado sobreviviente.

Esta es la razón por la que el mensaje de error de interbloqueo termina con "intente reiniciar la transacción", lo que, si no está utilizando transacciones explícitamente, solo significa "ejecutar su consulta nuevamente".

Consulte https://dev.mysql.com/doc/refman/5.6/en/innodb-deadlocks.html y examine el resultado de SHOW ENGINE INNODB STATUS; , que le mostrará la otra consulta, la que ayudó a causar el interbloqueo pero que no se eliminó, así como la que sí.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda