Mysql проблема блокировки таблицы - PullRequest
1 голос
/ 03 января 2011

На моей странице php

LOCK TABLE invoice_numbers WRITE
/*some stuff */ 
SELECT * FROM link_master
/*some stuff */ 
UNLOCK TABLES

Моя проблема в том, что после блокировки таблицы invoice_numbers.Я не могу получить доступ к таблице link_master , но после разблокировки могу получить доступ к таблице link_master

Почему это так?Как я могу получить доступ к link_master после блокировки invoice_numbers table?

EDIT:

Я хочу заблокировать только одну таблицу invoice_numbers.В течение периода блокировки я хочу использовать все остальные таблицы из базы данных.Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 03 января 2011

из MySQL справочное руководство :

Сеанс, для которого требуются блокировки, должен получить все необходимые блокировки в одном операторе LOCK TABLES. Например, в следующей последовательности операторов возникает ошибка при попытке доступа к t2, поскольку она не была заблокирована в операторе LOCK TABLES: mysql> LOCK TABLES t1 READ; mysql> SELECT COUNT(<em>) FROM t1; +----------+ | COUNT(</em>) | +----------+ | 3 | +----------+ mysql> SELECT COUNT(*) FROM t2; ERROR 1100 (HY000): Table 't2' was not locked with LOCK TABLES

1 голос
/ 26 августа 2011

Скорее всего, у вас тупик.Проверьте свой код на что-то вроде:

LOCK TABLE link_master WRITE
/*some stuff */
SELECT * FROM invoice_numbers
/*some stuff */
UNLOCK TABLES

Возможно, вы заблокировали одну таблицу в одной инструкции, а другую - в другой инструкции, которые выполняются одновременно.Только предположите.

Проверьте мои проблемы с блокировкой таблицы на: http://devoluk.com/mysql-myisam-table-lock-issue.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...