Come riavviare una transazione (in modo che venga eseguita almeno una volta) quando otteniamo:
(com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Trovato deadlock quando si tenta di ottenere il blocco; Prova a riavviare la transazione) OPPURE (la transazione scade)?
Sto usando MySQL (INNODB ENGINE) e Java.Please help e linkano anche eventuali risorse o codici utili.
risposte:
1 per risposta № 1Quando mai stai catturando questo tipo di eccezione nel tuo blocco di cattura
catch(Exception e){
if(e instanceof TransactionRollbackException){
//Retrigger Your Transaction
}
// log your exception or throw it its upto ur implementation
}
1 per risposta № 2
Se si utilizza JDBC normale, è necessario farlo manualmente, in un ciclo (e non dimenticare di controllare le condizioni preliminari ogni volta.
Se usi la primavera, "Come riavviare le transazioni su deadlock / lock-timeout in primavera?"potrebbe aiutare.