Django получил MySQL исключение 2014: команды не синхронизированы - PullRequest
0 голосов
/ 21 марта 2020

Веб-приложение Django на RHEL7, служба Gunicorn получила MySQL исключение № 2014, говорящее «Команды не синхронизированы; вы не можете запустить эту команду сейчас».

Эта ошибка происходит только когда получить один элемент атрибута ("/ api / admin / eav / attribute / 24 /") и все остальные элементы в порядке, например, в журналах ниже показано, что "/ api / admin / eav / attribute / 28 /" в порядке .

Я попытался перезапустить службу Gunicorn, но проблема сохраняется.

Это веб-приложение работало много лет назад, и мы заметили эту ошибку только недавно. Версии Django, Python и MySQL довольно старые сейчас.

Заранее большое спасибо за любые предложения по исправлению.

Я также буду очень признателен за общие советы по отладке Например:

  • как настроить Django для вывода SQL оператора запроса в журнал? (Я подозреваю, что с запросом что-то не так, и хочу попробовать его вручную в MySQL Workbench. Я все еще новичок в Django.)

  • Есть что-нибудь проверить на MySQL стороне?

См. подробности ниже, и дайте мне знать, если вам нужна дополнительная информация. Спасибо за вашу помощь.

Версия:

  • Python: 2.7.5;

  • Django: django .VERSION (1, 8, 13, 'final', 0);

  • MySQL: '10 .1.9-MariaDB '

Журналы:

[2020-03-20 18:17:37 +0000] [29744] [DEBUG] GET /api/admin/eav/attribute/
 - - [20/Mar/2020:18:17:38 -0600] "GET /api/admin/eav/attribute/ HTTP/1.0" 200 56843 "https://domain.under.test/api/admin/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
[2020-03-20 18:17:57 +0000] [29744] [DEBUG] GET /api/admin/eav/attribute/28/
 - - [20/Mar/2020:18:17:59 -0600] "GET /api/admin/eav/attribute/28/ HTTP/1.0" 200 280775 "https://domain.under.test/api/admin/eav/attribute/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
[2020-03-20 18:18:00 +0000] [29744] [DEBUG] GET /api/admin/jsi18n/
 - - [20/Mar/2020:18:18:00 -0600] "GET /api/admin/jsi18n/ HTTP/1.0" 200 2372 "https://domain.under.test/api/admin/eav/attribute/28/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
[2020-03-20 18:18:14 +0000] [29741] [DEBUG] GET /api/admin/eav/attribute/
 - - [20/Mar/2020:18:18:14 -0600] "GET /api/admin/eav/attribute/ HTTP/1.0" 200 56843 "https://domain.under.test/api/admin/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
[2020-03-20 18:18:23 +0000] [29738] [DEBUG] GET /api/admin/eav/attribute/24/
[2020-03-20 18:18:54 +0000] [29705] [CRITICAL] WORKER TIMEOUT (pid:29738)
[2020-03-20 18:18:54 +0000] [29738] [INFO] Worker exiting (pid: 29738)
Exception _mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now") in <bound method Cursor.__del__ of <MySQLdb.cursors.Cursor object at 0x7f82a329ec50>> ignored
Exception _mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now") in <generator object cursor_iter at 0x7f82a328e500> ignored
Exception _mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now") in <bound method Cursor.__del__ of <MySQLdb.cursors.Cursor object at 0x7f82a32a7cd0>> ignored
[2020-03-20 18:18:54 +0000] [29915] [INFO] Booting worker with pid: 29915
/webapp/EBACKEND/eav/models.py:42: RemovedInDjango19Warning: django.contrib.contenttypes.generic is deprecated and will be removed in Django 1.9. Its contents have been moved to the fields, forms, and admin submodules of django.contrib.contenttypes.
  from django.contrib.contenttypes import generic

[2020-03-20 18:21:40 +0000] [29915] [DEBUG] GET /api/admin/eav/attribute/
 - - [20/Mar/2020:18:21:40 -0600] "GET /api/admin/eav/attribute/ HTTP/1.0" 200 56843 "https://domain.under.test/api/admin/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"

1 Ответ

0 голосов
/ 24 марта 2020

Похоже, что были некоторые неэффективные SQL запросы, сгенерированные Django и создавшие чрезмерную рабочую нагрузку на систему, что привело к ошибке на стороне базы данных.

Как печатать SQL во время работы Django вам нужно изменить settings.py и увидеть более подробную информацию по ссылке ниже: записать все sql запросов

...