Environnement dans lequel le problème se produit :
1. Insérer et mettre à jour successivement la même donnée dans la même transaction ;
2. Plusieurs serveurs exploitent la même base de données ;
3. une exception a été levée, informations sur l'exception :
### Erreur lors de la mise à jour de la base de données Cause : java.sql.SQLException : délai d'attente du verrouillage dépassé ; essayez de redémarrer la transaction### L'erreur peut impliquer. com.*.dao.mapper.PhoneFlowMapper.updateByPrimaryKeySelective-Inline
Analyse des causes
### L'erreur s'est produite lors de la définition des paramètres
### SQL :-----Ce qui suit est l'instruction SQL et les informations sur la pile------ -
Solution
select * from information_schema.innodb_trx
2. Augmentez le temps d'attente du verrouillage, c'est-à-dire augmentez la valeur du paramètre de l'élément de configuration suivant, en secondes (s)
innodb_lock_wait_timeout=500
3. Optimisez le processus stocké et évitez les longues attentes pour les transactions.
Informations de référence
2. La transaction expire en attendant le verrouillage d'une certaine table. On estime que la table est verrouillée par un autre processus et n'a pas été libérée.
Vous pouvez utiliser SHOW INNODB STATUS/G pour vérifier l'état du verrouillage.
3. Recherchez une solution et ajoutez :
4. détecter les blocages et répondre au jet, ou mettre fin à la situation de blocage.
Si les paramètres innodb_table_locks=1 et autocommit=0, InnoDB fera attention aux blocages de table et aux verrous au niveau des lignes au niveau MySQL. De plus, InnoDB ne détecte pas les commandes MySQL Lock Tables et autres blocages du moteur de stockage. Vous devez définir innodb_lock_wait_timeout pour résoudre cette situation.innodb_lock_wait_timeout est le délai d'attente nécessaire à Innodb pour abandonner les verrous au niveau des lignes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!