Ошибка PostgreSQL 42704 – причины и решение | PGLens.

Ошибка PostgreSQL 42704 (undefined_object) 

Ошибка PostgreSQL 42704 (undefined_object) означает, что объект, указанный в запросе, не существует. Это общий код для объектов, у которых нет собственного кода ошибки: ролей, типов данных, ограничений, расширений, правил сортировки.

Частые причины

  1. Обращение к несуществующей роли (GRANT … TO app_user, где роль не создана).
  2. Пользовательский тип данных не создан или лежит в схеме вне search_path.
  3. Указано имя ограничения или индекса, которого нет в таблице.
  4. Расширение не установлено в текущей базе.
  5. Регистр имени: объект создан в двойных кавычках с заглавными буквами, а обращение идет без них.

Как исправить ошибку 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;

Бесплатный 7‑дневный аудит PostgreSQL с PGLens

PGLens остается у вас для полноценного тестирования еще до 90 дней БЕСПЛАТНО

    Напишите нам
    Удобнее с телефона?
    Сканируйте QR