MySQL Code D'Erreur: 1205. Verrouillage délai d'attente lors de la mise à jour avec inner join
Je suis en train de mettre à jour le Time_Stamp
champ dans ma table, simple_pack_data
, pour correspondre aux valeurs de l'portant le même nom de champ dans ma temp_data
table. Les tables chacune ont des champs appelé Test_Number
et Time_Marker
, dont je suis l'aide de INNER JOIN
les tables. Time_Marker
est comme une lecture de comte, où Time_Stamp
est un temps réel à partir du début de l'essai.
Je veux mettre à jour le Time_Stamp
un test à la fois, de sorte que le code que j'ai essayé est:
UPDATE simple_pack_data s
INNER JOIN (
SELECT *
FROM temp_data t
WHERE t.Test = "3"
) AS tmp
ON s.Test_Number = tmp.Test_Number AND s.Time_Marker = tmp.Time_Marker
SET s.Time_Stamp = tmp.Time_Stamp
WHERE s.Test_Number = "3";
Lorsque je l'exécute, il prend plus de 50 secondes, et j'ai l'erreur 1205. Si je lance une structure similaire instruction select:
SELECT *
FROM simple_pack_data s
INNER JOIN (
SELECT *
FROM temp_data t
WHERE t.Test = "3"
) AS tmp
ON s.Test_Number = tmp.Test AND s.Time_Marker = tmp.Time_Marker
WHERE s.Test_Number = "3";
Il prend beaucoup moins d'une seconde et je sais de jointure fonctionne bien. Est la mise à jour vraiment prendre longtemps? Si oui, est-il possible de modifier la valeur de délai d'expiration de sorte qu'il peut obtenir à travers elle?
Merci!!!! Le lien et les informations ultérieures, j'ai trouvé sur la définition de l'opération "LIRE COMMIS' a fait le tour. Je vais certainement envisager de passer à Postgres dans l'avenir, mais compte tenu de l'accent et de la chronologie de ce projet, je vais rester avec MySQL - étant donné que je continue de trouver des solutions de contournement 😉
BTW c'était mon premier post ici, donc je ne suis pas vraiment sûr de savoir comment vous donner du crédit pour la réponse, puisque vous n'posté dans la section des commentaires
Viens de tomber sur cette. êtes-vous à l'aide de windows? essayez de redémarrer le service de MySQL dans le gestionnaire des tâches. Les Tables ont tendance à se bloquer lorsque d'autres programmes/services de l'interrogation, puis coincé dans les boucles (typiquement de s'écraser), y compris workbench défaut.
OriginalL'auteur eh_whatever | 2013-10-18
Vous devez vous connecter pour publier un commentaire.
Cette erreur est entièrement MySQL ne pas faire comme il se doit. La meilleure solution est de descendre de MySQL, mais dépourvu de cette capacité, cette la performance post de blog m'a aidé à obtenir autour de cette dans le passé.
MySQL a beaucoup de ces petits pièges. C'est comme travailler dans l'Accès, la moitié du temps, le programme va faire la bonne chose et de ne pas générer une erreur.
Je vais vous donner le bénéfice du doute que cette réponse est à partir de 2013, et que les conseils d'aujourd'hui ne serait pas à "descendre MySql". Sinon, nous pouvons parler de la façon dont Github, Uber, et d'autres grandes entreprises MySql évolutive pour parvenir à leurs fins.
oui, le vieux la réponse qui obtient beaucoup de downvotes que le temps passe. Je crois que uber est à l'aide de la version entreprise, si vous êtes prêt à payer mysql est un choix décent. Ce post a été écrit avant 5.8. Des gens coincés dans les anciennes versions encore theae questions.
OriginalL'auteur Twelfth