Как лучше решить ошибку — 'cursor «...» does not exist' при использование пуллера?
Ссылка скопирована
По вводным: использую Pgbouncer, наискал в поиске решение - доавбить в параметры БД:
По вводным: dISABLE_SERVER_SIDE_CURSORS": True
Подскажите, лучший вариант.
По вводным: invalidCursorName: cursor "_django_curs_140116399986368_sync_1" does not exist
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
SMM
Из-за чего не сохраняется видео в мобильной программе blackmagic?
1 ответ

Ошибка
cursor does not existпри использовании пуллера чаще всего связана с PostgreSQL server-side cursors и PgBouncer в режиме transaction pooling. Django может создать именованный курсор в одной транзакции/соединении, а следующий запрос попадает уже на другое серверное соединение. В итоге cursor, который был создан ранее, “исчезает”.Если у вас Django + PostgreSQL + PgBouncer, первое, что нужно проверить — режим пула. В
transactionpooling нельзя безопасно полагаться на server-side cursors. Решения два: отключить server-side cursors в Django или перевести PgBouncer в session pooling для этого приложения.Для Django обычно помогает настройка:
DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", "NAME": "app", "USER": "app", "PASSWORD": "secret", "HOST": "pgbouncer", "PORT": "6432", "DISABLE_SERVER_SIDE_CURSORS": True, } }
Также проверьте места, где используется
QuerySet.iterator(), большие выгрузки, streaming responses и ручная работа с cursor. Такие сценарии часто включают server-side cursor, чтобы не держать весь результат в памяти. С PgBouncer в transaction mode это ломается.Если большие выборки действительно нужны, варианты такие:
Итог: это не “случайная ошибка Django”, а конфликт жизненного цикла курсора и пула соединений. Начните с
DISABLE_SERVER_SIDE_CURSORS=True. Если после этого ошибка исчезла, причина подтверждена. Дальше уже решайте архитектурно: session pooling для таких операций или отказ от курсоров в пользу батчевой обработки.