Maison base de données tutoriel mysql mysql的一个死锁问题解决_MySQL

mysql的一个死锁问题解决_MySQL

Jun 01, 2016 pm 01:04 PM
问题

这里说的是innodb类型的死锁!

网上找了好多东西 各种命令查看死锁信息,后面这条能用:

show engine innodb status;(根据mysql版本而异)

这命令在mysql命令行执行后如果有死锁

会出现下面这一块:

------------------------
LATEST DETECTED DEADLOCK
------------------------

然后你可以根据这块内容找到你引起死锁的语句。

然后解决它,

我这次的死锁是因为,

有这么一条语句

update 表名 set xx=xxx where xxx=xxx!

其中xxx没有索引!

innodb是行级锁,但是mysql的机制是用索引来找到该行,如果你那个where字段没有索引,那么mysql就找不到那一行,就会锁整张表了

这样后面的访问就会引发死锁!

给xxx字段加上索引

解决问题。

附上异常信息:

Caused by: org.springframework.dao.DeadlockLoserDataAccessException: SqlMapClient operation; SQL [];
--- The error occurred while applying a parameter map.
--- Check the point.updatePointAccount-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the point.updatePointAccount-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:300)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:212)
at org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:411)
at com.hsd.popularize.dao.BaseDaoImpl.update(BaseDaoImpl.java:162)
... 87 more
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the point.updatePointAccount-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:91)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:505)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
at org.springframework.orm.ibatis.SqlMapClientTemplate$10.doInSqlMapClient(SqlMapClientTemplate.java:413)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:209)
... 89 more
Caused by: com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:941)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1169)
at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:693)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:794)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)
at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.ibatis.common.jdbc.logging.PreparedStatementLogProxy.invoke(PreparedStatementLogProxy.java:62)
at com.sun.proxy.$Proxy20.execute(Unknown Source)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:81)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:200)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:78)
... 93 more

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Résoudre le problème « erreur : redéfinition de la classe 'ClassName' » qui apparaît dans le code C++ Résoudre le problème « erreur : redéfinition de la classe 'ClassName' » qui apparaît dans le code C++ Aug 25, 2023 pm 06:01 PM

Résolvez le problème « erreur : redéfinition de la classe 'ClassName » dans le code C++. Dans la programmation C++, nous rencontrons souvent diverses erreurs de compilation. L'une des erreurs courantes est "error: redefinitionofclass 'ClassName'" (erreur de redéfinition de la classe 'ClassName'). Cette erreur se produit généralement lorsque la même classe est définie plusieurs fois. Cet article sera

Comment résoudre le problème selon lequel jQuery ne peut pas obtenir la valeur de l'élément de formulaire Comment résoudre le problème selon lequel jQuery ne peut pas obtenir la valeur de l'élément de formulaire Feb 19, 2024 pm 02:01 PM

Pour résoudre le problème selon lequel jQuery.val() ne peut pas être utilisé, des exemples de code spécifiques sont requis. Pour les développeurs front-end, l'utilisation de jQuery est l'une des opérations courantes. Parmi eux, utiliser la méthode .val() pour obtenir ou définir la valeur d'un élément de formulaire est une opération très courante. Cependant, dans certains cas précis, le problème de ne pas pouvoir utiliser la méthode .val() peut se poser. Cet article présentera quelques situations et solutions courantes, et fournira des exemples de code spécifiques. Description du problème Lorsque vous utilisez jQuery pour développer des pages frontales, vous rencontrerez parfois

Problèmes d'évaluation de l'effet de clustering dans les algorithmes de clustering Problèmes d'évaluation de l'effet de clustering dans les algorithmes de clustering Oct 10, 2023 pm 01:12 PM

Le problème d'évaluation de l'effet de clustering dans l'algorithme de clustering nécessite des exemples de code spécifiques. Le clustering est une méthode d'apprentissage non supervisée qui regroupe des échantillons similaires dans une seule catégorie en regroupant les données. Dans les algorithmes de clustering, la manière d’évaluer l’effet du clustering est une question importante. Cet article présentera plusieurs indicateurs d'évaluation de l'effet de clustering couramment utilisés et donnera des exemples de code correspondants. 1. Indice d'évaluation de l'effet de clustering Coefficient Silhouette Le coefficient Silhouette évalue l'effet de clustering en calculant la proximité de l'échantillon et le degré de séparation des autres clusters.

Apprenez à diagnostiquer les problèmes courants de l'iPhone Apprenez à diagnostiquer les problèmes courants de l'iPhone Dec 03, 2023 am 08:15 AM

Connu pour ses performances puissantes et ses fonctionnalités polyvalentes, l’iPhone n’est pas à l’abri de contretemps ou de difficultés techniques occasionnelles, un trait commun aux appareils électroniques complexes. Rencontrer des problèmes avec votre iPhone peut être frustrant, mais aucune alarme n'est généralement nécessaire. Dans ce guide complet, nous visons à démystifier certains des défis les plus fréquemment rencontrés associés à l’utilisation de l’iPhone. Notre approche étape par étape est conçue pour vous aider à résoudre ces problèmes courants, en vous proposant des solutions pratiques et des conseils de dépannage pour remettre votre équipement en parfait état de fonctionnement. Que vous soyez confronté à un problème ou à un problème plus complexe, cet article peut vous aider à les résoudre efficacement. Conseils de dépannage généraux Avant de passer aux étapes de dépannage spécifiques, voici quelques conseils utiles

Résoudre l'erreur PHP : problèmes rencontrés lors de l'héritage de la classe parent Résoudre l'erreur PHP : problèmes rencontrés lors de l'héritage de la classe parent Aug 17, 2023 pm 01:33 PM

Résolution des erreurs PHP : problèmes rencontrés lors de l'héritage des classes parentes En PHP, l'héritage est une fonctionnalité importante de la programmation orientée objet. Grâce à l'héritage, nous pouvons réutiliser le code existant, l'étendre et l'améliorer sans modifier le code d'origine. Bien que l'héritage soit largement utilisé dans le développement, vous pouvez parfois rencontrer des problèmes d'erreur lors de l'héritage d'une classe parent. Cet article se concentrera sur la résolution des problèmes courants rencontrés lors de l'héritage d'une classe parent et fournira des exemples de code correspondants. Question 1 : la classe parent est introuvable pendant le processus d'héritage de la classe parent, si le système ne le fait pas.

Que dois-je faire si je ne parviens pas à télécharger Steam sur Windows 10 ? Que dois-je faire si je ne parviens pas à télécharger Steam sur Windows 10 ? Jul 07, 2023 pm 01:37 PM

Steam est une plate-forme de jeu très populaire avec de nombreux jeux de haute qualité, mais certains utilisateurs de Win10 signalent qu'ils ne peuvent pas télécharger Steam. Il est fort probable que l'adresse du serveur IPv4 de l'utilisateur ne soit pas définie correctement. Pour résoudre ce problème, vous pouvez essayer d'installer Steam en mode de compatibilité, puis modifier manuellement le serveur DNS en 114.114.114.114, et vous devriez pouvoir le télécharger plus tard. Que faire si Win10 ne parvient pas à télécharger Steam : Sous Win10, vous pouvez essayer de l'installer en mode de compatibilité. Après la mise à jour, vous devez désactiver le mode de compatibilité, sinon la page Web ne se chargera pas. Cliquez sur les propriétés de l'installation du programme pour exécuter le programme en mode de compatibilité. Redémarrer pour augmenter la mémoire, la puissance

Le problème de la capacité de généralisation des modèles d'apprentissage automatique Le problème de la capacité de généralisation des modèles d'apprentissage automatique Oct 08, 2023 am 10:46 AM

La capacité de généralisation des modèles d'apprentissage automatique nécessite des exemples de code spécifiques. Avec le développement et l'application de l'apprentissage automatique de plus en plus répandus, les gens accordent de plus en plus d'attention à la capacité de généralisation des modèles d'apprentissage automatique. La capacité de généralisation fait référence à la capacité de prédiction d'un modèle d'apprentissage automatique sur des données non étiquetées et peut également être comprise comme l'adaptabilité du modèle dans le monde réel. Un bon modèle d’apprentissage automatique doit avoir une grande capacité de généralisation et être capable de faire des prédictions précises sur de nouvelles données. Cependant, dans les applications pratiques, nous rencontrons souvent des modèles qui fonctionnent bien sur l'ensemble d'entraînement, mais qui échouent sur l'ensemble de test ou sur des modèles réels.

Problème d'acquisition d'étiquettes dans l'apprentissage faiblement supervisé Problème d'acquisition d'étiquettes dans l'apprentissage faiblement supervisé Oct 08, 2023 am 09:18 AM

Le problème d'acquisition d'étiquettes dans l'apprentissage faiblement supervisé nécessite des exemples de code spécifiques Introduction : L'apprentissage faiblement supervisé est une méthode d'apprentissage automatique qui utilise des étiquettes faibles pour la formation. Différent de l’apprentissage supervisé traditionnel, l’apprentissage faiblement supervisé n’a besoin que d’utiliser moins d’étiquettes pour former le modèle, plutôt que chaque échantillon doit avoir une étiquette précise. Cependant, dans l’apprentissage faiblement supervisé, la manière d’obtenir avec précision des informations utiles à partir d’étiquettes faibles est une question clé. Cet article présentera le problème d'acquisition d'étiquettes dans l'apprentissage faiblement supervisé et donnera des exemples de code spécifiques. Introduction au problème d’acquisition de labels en apprentissage faiblement supervisé :

See all articles