Mysql
 sql >> Base de données >  >> RDS >> Mysql

La table [tablename] n'est pas verrouillée

Vous devez verrouiller chaque table , que vous souhaitez utiliser jusqu'au LOCK est libérée. Vous pouvez donner completely_different_table_2 seulement un READ LOCK , ce qui permet à d'autres processus de lire cette table lorsqu'elle est verrouillée :

LOCK TABLES table_1 WRITE, completely_different_table_2 READ;

PS :MySQL a une raison de le faire. Si vous demandez un LOCK , vous souhaitez figer un état cohérent de vos données. Si vous lisez les données de completely_different_table_2 à l'intérieur de votre LOCK , vos données écrites dans table_1 dépendra en quelque sorte de cette autre table. Par conséquent, vous ne voulez pas que quelqu'un modifie cette table pendant votre LOCK et demander un READ LOCK pour cette deuxième table également. Si vos données sont écrites dans table_1 ne dépend pas de l'autre table, il suffit de ne pas l'interroger avant le LOCK est libéré.