Ошибка PostgreSQL 42704 (undefined_object) означает, что объект, указанный в запросе, не существует. Это общий код для объектов, у которых нет собственного кода ошибки: ролей, типов данных, ограничений, расширений, правил сортировки.
Частые причины
- Обращение к несуществующей роли (GRANT … TO app_user, где роль не создана).
- Пользовательский тип данных не создан или лежит в схеме вне search_path.
- Указано имя ограничения или индекса, которого нет в таблице.
- Расширение не установлено в текущей базе.
- Регистр имени: объект создан в двойных кавычках с заглавными буквами, а обращение идет без них.
Как исправить ошибку 42704
- Определите тип объекта по тексту ошибки – PostgreSQL называет его прямо (role «…» does not exist, type «…» does not exist).
- Проверьте наличие объекта запросом к системным каталогам:
SELECT rolname FROM pg_roles WHERE rolname = 'app_user'; SELECT typname FROM pg_type WHERE typname = 'my_type'; SELECT extname FROM pg_extension;
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;