Главная / Справочник ошибок / PostgreSQL
Запрос обращается к таблице, которой нет в этой базе или схеме
ERROR: relation "..." does not exist
«ERROR: relation ... does not exist» (SQLSTATE 42P01) в PostgreSQL: таблица не найдена. Не та база, не та схема в search_path, имя с заглавными буквами без кавычек или объект ещё не создан. Как проверить за минуту.
Что это значит
PostgreSQL не нашёл таблицу или представление с таким именем. Причины почти всегда одни и те же:
- подключение не к той базе (тестовая вместо рабочей, база по умолчанию
postgres); - таблица лежит в другой схеме, а её нет в
search_path; - таблицу создали с заглавными буквами в кавычках (
"Docs"), а обращаются без кавычек: PostgreSQL переводит имя без кавычек в нижний регистр и ищетdocs; - объект ещё не создан: не применилось обновление, не опубликован модуль, на который ссылается отчёт или запрос.
Как проверить
SELECT current_database(), current_user;
SHOW search_path;
SELECT schemaname, tablename FROM pg_tables WHERE tablename ILIKE '%docs%';
Последний запрос найдёт таблицу в любой схеме и покажет точное написание имени.
Что сделать
- Подключиться к нужной базе или указать схему в запросе явно:
schema.table. - Для имени с заглавными буквами писать его в кавычках так же, как при создании.
- Если объекта нет, разобраться, почему не применилось обновление или публикация, и не создавать таблицу вручную: при следующем обновлении это приведёт к новому конфликту.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать