Я думаю, что это может быть проблемой взаимоблокировки, но я только читаю данные таблицы. Или что-то действительно простое я не вижу.Ошибка блокировки таблиц MySQL
Мой $msqli
OBJ отлично подходит для доступа к БД
Но я немного озадачен об этой ошибке .. мне говорят, что clients
таблица не заблокирована LOCK TABLES
Все предложения приветствуется .. Спасибо Вот мой PHP код
$mysqli = $GLOBALS['mysqli'];
$mysqli->query("LOCK TABLES clients READ, invoices READ, estimates READ");
$mysqli->query("SET @inv='Invoice'");
$mysqli->query("SET @est='Estimate'");
$sql = " (SELECT @inv, name AS client, invoices.id, invoices.ref AS ref, invoices.addTs AS ts \n"
. "FROM `clients` , `invoices` \n"
. "WHERE invoices.user_id = " . $_SESSION['user_id'] . " \n"
. "AND clients.id = invoices.client_id)\n"
. "UNION ALL\n"
. "(SELECT @est, name as client, estimates.id, estimates.ref AS ref, estimates.addTs AS ts \n"
. "FROM `clients` ,`estimates` \n"
. "WHERE estimates.user_id = " . $_SESSION['user_id'] . " \n"
. "AND clients.id = estimates.client_id) \n"
. "ORDER BY ts DESC LIMIT 5";
if ($result = $mysqli->query($sql) or die(mysqli_error($mysqli))) {
//Do stuff here
}
Когда я запускаю этот $sql
запрос в PhpMyAdmin она прошла успешно ... Спасибо за любую помощь ..
** * ** * ** * ** * ** * ** * **РЕШИТЬ (?) ** * ** * ** * ** * ** * ** *
Fixed (Или, кажется):
Цитата http://bugs.mysql.com/bug.php?id=6588
«вы не можете использовать заблокированную таблицу несколько раз в одном запросе - используйте для этого псевдонимы ».
Так запрос обновляется
$mysqli->query("LOCK TABLES clients_t READ,clients READ ,
invoices READ, estimates READ");
$mysqli->query("SET @inv='Invoice'");
$mysqli->query("SET @est='Estimate'");
$sql = " " .
"(SELECT @inv, name AS client, invoices.id,
invoices.ref AS ref, invoices.addTs AS ts "
. "FROM `clients` AS clients_t , `invoices`\n"
. "WHERE invoices.user_id = " . $_SESSION['user_id'] . " \n"
. "AND clients_t.id = invoices.client_id)\n"
. "UNION ALL \n"
. "(SELECT @est , name AS client, estimates.id,
estimates.ref AS ref, estimates.addTs AS ts\n"
. "FROM `clients` ,`estimates` \n"
. "WHERE estimates.user_id = " . $_SESSION['user_id'] . " \n"
. "AND clients.id = estimates.client_id)\n"
. "ORDER BY ts DESC LIMIT 5";
Я также необходимо заблокировать таблицу clients_t
псевдонима. В любом случае, для будущих пользователей я надеюсь, что это поможет.
Пожалуйста, укажите точное сообщение об ошибке – Tarik
Сообщение об ошибке «Клиент таблицы» не был заблокирован с помощью LOCK TABLES'. Вероятно, я должен был упомянуть, что этот запрос работал раньше, но вчера я работал над материалом в течение нескольких часов, который я не вижу, чтобы повлиять на запрос. Кроме того, если я сменил '$ sql' на« SELECT * FROM клиенты », он будет работать ... Поэтому я подозреваю, что' $ sql' - это проблема – bockymurphy