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?

J'ai vu cette erreur une fois en couple...c'est InnoDB et le verrouillage de niveau ligne à son meilleur. La meilleure solution est de désinstaller MySQL et l'utilisation Postgres 😉 Il y a beaucoup d'info sur cette erreur sur le net, vous n'êtes pas le seul avec ce problème. Ce lien m'a aidé dans le passé. mysqlperformanceblog.com/2012/03/27/innodbs-gap-locks
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