Timeout attesa blocco superato; prova a riavviare la transazione


12

Ricevo questo errore ripetutamente ogni giorno 4 - 5 volte.

SQLSTATE [HY000]: errore generale: 1205 superamento del timeout di attesa blocco; prova a riavviare la transazione

Questa volta riavvio il mio phpmyadmin ma succede ancora e ancora. Non sono in grado di sottolineare questo problema.

Sto usando Magento ver. 1.9.0.1 nel sito Web. Ho più di 7000 prodotti. Nel server ho 16 GB di RAM.

Come risolvere questo problema?

Risposte:


8

Dovresti considerare di aumentare il valore di timeout di attesa del blocco per InnoDB impostando innodb_lock_wait_timeout , il valore predefinito è 50 sec

mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50    |
+--------------------------+-------+
1 row in set (0.01 sec)

Puoi impostarlo su un valore più alto in modo /etc/my.cnfpermanente con questa linea

[mysqld]
innodb_lock_wait_timeout=120

e riavvia mysql. Se non riesci a riavviare mysql in questo momento, esegui questo:

SET GLOBAL innodb_lock_wait_timeout = 120; 

Puoi anche impostarlo per la durata della sessione

SET innodb_lock_wait_timeout = 120; 

seguito dalla tua richiesta


3
perché non 140 'o 2000'? come questo potrebbe effettivamente risolvere il problema? nascondendolo?
Elzo Valugi,

hai un problema che causa il blocco delle tabelle più del previsto. In questo caso ti costringi ad aspettare 2 minuti ogni volta invece di risolvere il problema una volta. E come dice Elzo ... cosa succede quando 120 non è abbastanza?
Carlos Robles,

7

Verrà visualizzato questo messaggio se il contenuto del database a cui si sta tentando di accedere è stato bloccato da un processo precedente (generalmente di lunga durata). MySQL attenderà un certo periodo di tempo prima che il blocco venga rimosso prima che si arrenda e genera tale errore. Se sei in grado di tracciare quando vedi questi messaggi di errore in qualsiasi momento della giornata, dovresti guardare cos'altro sta facendo il server in quel momento, ad esempio un backup del database in esecuzione. In questo modo dovresti essere in grado di restringere le possibilità di quali processi potrebbero creare il blocco, anche se non è sempre così semplice da fare, probabilmente sarà un po 'di tentativi ed errori.


5

Il motivo alla base di questo problema è se si eseguono molti script personalizzati e si uccidono gli script prima che la connessione al database abbia la possibilità di chiudersi.

Qualcosa sta bloccando l'esecuzione della query. Molto probabilmente un'altra query che aggiorna, inserisce o elimina da una delle tabelle nella query. Devi scoprire di cosa si tratta:

Se riesci ad accedere a MySQL dalla CLI ed esegui il seguente comando

SHOW PROCESSLIST;

Una volta individuato il processo di blocco / sospensione, trovalo ided esegui:

KILL {id};

Rieseguire la query iniziale.

Potrebbe essere questo link che ti aiuterà: SQLSTATE [HY000]: errore generale: 1205 Timeout attesa di blocco superato; prova a riavviare la transazione Magento .


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.