Drupal Commerce вызывает блокировку базы данных

Я пытаюсь найти нижнюю часть известной ошибки Drupal Commerce блокировка строк.

Когда пользователь входит в систему на моем сайте разработки, Drupal Commerce запускает несколько одинаковых запросов, которые выглядят так, даже если корзина пуста:

SELECT revision.order_number AS order_number, revision.revision_id AS revision_id, revision.revision_uid AS revision_uid, revision.mail AS mail, revision.status AS status, revision.log AS log, revision.revision_timestamp AS revision_timestamp, revision.revision_hostname AS revision_hostname, revision.data AS data, base.order_id AS order_id, base.type AS type, base.uid AS uid, base.created AS created, base.changed AS changed, base.hostname AS hostname
FROM 
commerce_order base
INNER JOIN commerce_order_revision revision ON revision.revision_id = base.revision_id
WHERE  (base.order_id IN  (''203''))  FOR UPDATE

Все они начинаются меньше секунды, и все они висят и сидят в ожидании блокировки транзакции. Связанный с нитью поток указывает, что проблема может заключаться в том, что один и тот же пользователь регистрируется в разных браузерах, но в моей таблице сеансов есть только одна запись, поэтому я ищу другую причину.

Что еще может происходить здесь? Большая очевидная подсказка, которую я вижу, заключается в том, что я не могу запустить этот запрос без ошибки - «base.order_id IN ('' 203 '')) FOR UPDATE" выдает синтаксическую ошибку, и насколько я могу видеть это не нормальное использование для IN - обычно это целые числа, разделенные запятой, например, лимитный запрос, например ('1', '12'). Сам заказ представляет собой пустую корзину: открытие файла blob просто дает мне следующее:

<!DOCTYPE HTML><html lang='en' dir='ltr'><meta charset="utf-8" /><meta name="robots" content="noindex,nofollow" /><meta http-equiv="X-UA-Compatible" content="IE=Edge"><style>html{display: non

Но я не знаю достаточно о SQL, чтобы узнать, может ли это сделать что-то, что вы можете сделать в соединении - что здесь происходит? И где еще я должен искать отладку?


ОБНОВЛЕНИЕ 11/02 . Я не получил основную причину этого, но я провел еще несколько исследований.

  • Канал Айлендер прав, нет ничего сумасшедшего в этом синтаксисе. Я должен был как-то изменить его между копированием и вставкой и попытаться запустить запрос.

  • Я усекал таблицу order and orders_revisions на сайте dev, а затем попытался реплицировать ошибку, добавив и удалив вещи из корзины моего администратора (пытаясь создать много изменений). Я не мог реплицировать ошибку, как это, и производительность стала намного лучше от них: загрузка страницы при входе в систему и выходе ускорилась на несколько секунд, и я даже не могу поймать этот запрос SELECT ... FOR UPDATE в phpMyAdmin's вкладку состояния.

Кажется, что проблема разрешилась на данный момент, но обрезание обеих таблиц, очевидно, нецелесообразно для производственного сайта. Возможно, установление ордеров на этапе «cart» истекает через некоторое время?

5 голосов | спросил nikobelia 5 FebruaryEurope/MoscowbThu, 05 Feb 2015 18:36:40 +0300000000pmThu, 05 Feb 2015 18:36:40 +030015 2015, 18:36:40

1 ответ


0

На основе вашего обновления вы можете подумать об использовании Commerce Expiration .

ответил joshmiller 15 Jpm1000000pmFri, 15 Jan 2016 18:18:54 +030016 2016, 18:18:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132