Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

08007 1С:Предприятие и СУБД

Ошибка PostgreSQL 08007 connection_does_not_exist: разрыв во время транзакции

Обновлено: 26.08.2026 · Официальная документация ↗

СУБД или клиентский драйвер возвращает ошибку при попытке выполнить операцию фиксации или отката транзакции (COMMIT / ROLLBACK), если физическое соединение было разорвано ранее:

ERROR: connection to server was lost during transaction
SQLSTATE: 08007

1. Анализ журнала PostgreSQL на аварийные события

grep -E "FATAL|PANIC|terminating" /var/log/postgresql/postgresql-*.log | tail -n 50

2. Проверка состояния транзакций на сервере

Найдите зависшие или аварийно разорванные транзакции в представлении pg_stat_activity:

SELECT pid, usename, client_addr, state, query_start, wait_event_type, wait_event, query
FROM pg_stat_activity
WHERE state = 'idle in transaction'
  AND query_start < NOW() - INTERVAL '15 minutes';

3. Принудительное завершение зависшего бэкенда

-- Мягкая отмена запроса:
SELECT pg_cancel_backend(pid);

-- Принудительное отключение соединения:
SELECT pg_terminate_backend(pid);

4. Настройка автоотключения зависших транзакций в postgresql.conf

# Автоматическое убийство сессий, зависших внутри транзакции более чем на 10 минут
idle_in_transaction_session_timeout = 600000

# Таймаут ожидания блокировок строк
lock_timeout = 30000

Примените настройки: SELECT pg_reload_conf();

💡 Практика специалистов: Если в технологическом журнале 1С регулярно появляются ошибки сочленения 08007, проверьте сетевое оборудование между сервером приложений 1С и хостом СУБД на наличие потерь пакетов (packet loss) и сбросов состояний в таблицах Conntrack межсетевого экрана Linux.

Частые вопросы (FAQ)

Зафиксируются ли изменения на диске, если соединение оборвалось до завершения COMMIT?

Нет. Если подтверждение от СУБД об успешной записи WAL-записи COMMIT не было получено клиентом, ядро PostgreSQL автоматически выполняет ROLLBACK всех незафиксированных изменений этой транзакции.

Почему ошибка 08007 возникает при использовании балансировщиков нагрузки (HAProxy)?

Если балансировщик имеет агрессивный таймаут client-timeout или server-timeout, меньший времени выполнения длительного запроса 1С (например, закрытия месяца), балансировщик рвет TCP-сессию до получения ответа от СУБД.

Как предотвратить зависание невалидных соединений в пуле приложений?

В настройках пула соединений (или сервера приложений 1С) необходимо активировать периодическую валидацию сокетов тестовым запросом (validationQuery = 'SELECT 1').

В чем отличие ошибки 08007 от 08003?

Ошибка 08007 фиксирует потерю соединения непосредственно в момент выполнения транзакционного блока. Ошибка 08003 возникает при попытке отправить любой новый запрос в дескриптор соединения, которое уже перешло в закрытый статус.

Полезные материалы
Рекомендуем