Что это значит

Directum RX работает с базой через NHibernate. Эта фраза только обёртка: база вернула ошибку на запрос. Что именно случилось, видно во внутреннем исключении PostgreSQL.

Частые варианты: - 57014 canceling statement due to statement timeout: запрос шёл дольше разрешённого; - 40P01 deadlock detected: взаимная блокировка; - 42703 column … does not exist или 42P01 relation … does not exist: схема базы не совпадает с кодом, обычно после неполного обновления; - 23503 … violates foreign key constraint: удаляют или меняют запись, на которую ссылаются другие.

Как проверить

  1. Код SQLSTATE и текст во внутреннем исключении.
  2. Сам запрос: он есть в логе рядом. По нему понятно, какая сущность и какой модуль.
  3. Если это таймаут, найти запрос в pg_stat_statements и посмотреть план.

Что сделать

  1. Таймауты: разобрать медленный запрос, чаще всего помогает индекс. Подсказки в статье о разборе «тормозит».
  2. Несовпадение схемы: довести обновление до конца, чтобы скрипты изменения базы и код были одной версии.
  3. Нарушение ключа: это логика прикладной разработки, передать разработчикам с текстом и данными.