sql >> Databasteknik >  >> RDS >> Mysql

Arbeta runt MySQL-felet Deadlock hittades när man försökte få lås; försök starta om transaktionen

Om du använder InnoDB eller någon transaktions-RDBMS på radnivå, är det möjligt att alla skrivtransaktion kan orsaka ett dödläge, även i helt normala situationer. Större tabeller, större skrivningar och långa transaktionsblock ökar ofta sannolikheten för att låsningar uppstår. I din situation är det förmodligen en kombination av dessa.

Det enda sättet att verkligen hantera dödlägen är att skriva din kod för att förvänta sig dem. Detta är i allmänhet inte särskilt svårt om din databaskod är välskriven. Ofta kan du bara sätta en try/catch runt frågekörningslogiken och leta efter ett dödläge när fel uppstår. Om du får en, är det normala att göra att bara försöka köra den misslyckade frågan igen.

Jag rekommenderar starkt att du läser denna sida i MySQL-manualen. Den har en lista över saker att göra för att hjälpa till att hantera dödlägen och minska deras frekvens.



  1. Hur SUBTIME() fungerar i MariaDB

  2. Oracle Database TLS1.2 / SSL-anslutning med JDBC thin och JKS

  3. Hur man ersätter en Intermediate MySQL eller MariaDB Master med en Binlog Server med MaxScale

  4. Hämta den senaste raden för givet ID