63 votes

Déverrouillage des tables si le fil est perdu

http://dev.mysql.com/doc/refman/5.0/en/internal-locking.html

Voici l'extrait de la documentation.

mysql> LOCK TABLES real_table WRITE, temp_table WRITE;
mysql> INSERT INTO real_table SELECT * FROM temp_table;
mysql> DELETE FROM temp_table;
mysql> UNLOCK TABLES;

Ma question est que si j'utilise cette logique dans le code shell script, et si le thread est perdu (pas tué) avant qu'il n'atteigne l'instruction "unlock tables", comment saurai-je que certaines tables sont verrouillées et comment débloquer les tables manuellement ?

150voto

Kostyantyn Points 661

Voici ce que je fais pour FORCER LE DÉVERROUILLAGE de certaines tables verrouillées dans MySQL.

1) Entrez dans MySQL

mysql -u your_user -p

2) Voyons la liste des tables verrouillées

mysql> show open tables where in_use>0;

3) Voyons la liste des processus en cours, l'un d'entre eux verrouille votre/vos table(s)

mysql> show processlist;

4) Tuons un de ces processus

mysql> kill put_process_id_here;

34voto

Devart Points 52715

comment puis-je savoir que certaines tables sont verrouillées ?

Vous pouvez utiliser AFFICHER LES TABLES OUVERTES pour visualiser les tables verrouillées.

comment débloquer les tables manuellement ?

Si vous connaissez l'ID de la session qui a verrouillé les tables - 'SELECT CONNECTION_ID()', vous pouvez alors exécuter la commande suivante TUER pour terminer la session et déverrouiller les tables.

3voto

kevnk Points 7212

Avec Sequel Pro :

Le redémarrage de l'application a déverrouillé mes tables. Ça réinitialise la connexion de la session.

NOTE: I was doing this for a site on my local machine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X