4 votes

Comment impliquer le verrou WRITE sur toutes les tables dans MySql?

Comment impliquer le verrou WRITE sur toutes les tables dans MySql ? J'ai essayé ce qui suit mais cela donne une erreur.

FLUSH TABLES mytest.mytable1 WITH  LOCK;

ERROR 1064 (42000): Vous avez une erreur de syntaxe dans votre requête SQL; vérifiez le manuel qui correspond à la version de votre serveur MySQL pour connaître la bonne syntaxe à utiliser 
près de 'WITH  LOCK' à la ligne 1

7voto

Brad Points 3206

Que essayez-vous de faire ici? Les verrous dans MySQL peuvent être un peu déroutants si vous faites des hypothèses sur ce que vous pensez qu'ils font.

  • Un verrou de lecture READ permet à la session avec le verrou de lire et aux autres sessions de lire mais pas d'écrire.
  • Un verrou d'écriture WRITE permet à la session avec le verrou de lire et d'écrire et aux autres sessions de ne pas avoir accès.

La syntaxe FLUSH TABLES ne vous permet pas de spécifier une liste de tables ainsi que d'acquérir un verrou. FLUSH TABLES WITH READ LOCK verrouille toutes les tables. FLUSH TABLES videra ces tables. Il y a un verrou implicite impliqué dans la vidange des tables car les nouvelles écritures ne peuvent pas aller dans une table pendant qu'elle est vidée, mais ce verrou implicite est libéré dès que le vidage est terminé.

Si vous voulez verrouiller des tables spécifiques avec un verrou d'écriture, `LOCK TABLES WRITE est ce que vous voulez. Vous pouvez fournir une liste de tables séparées par des virgules ici. Si vous voulez verrouiller toutes les tables, vous devrez fournir la liste entière.

`

4voto

arn Points 91

Je voudrais conclure par une déclaration simple - FLUSH TABLES WITH READ LOCK; permettra à toutes les sessions d'effectuer des opérations de lecture et ne permettra pas de modifier les données pour aucune session. La commande LOCK TABLE tblname WRITE; verrouillera la table et permettra de lire ou de modifier les données pour la session émise mais pas pour les autres sessions. Merci ......

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X