PosgreSQL - ОШИБКА: отношение "имя_таблицы" не существует. Как сделать запрос без имени схемы? - PullRequest
0 голосов
/ 08 ноября 2018

Я перехожу с оракула на PostgreSQL. В моем приложении у меня много запросов вроде этого

ResultSet resultSet = statement.executeQuery("SELECT NAME FROM Table_name");

Но я терплю неудачу за исключением

ОШИБКА: отношение "имя_таблицы" не существует.

Насколько я понял, мне нужно также указать имя схемы, и когда я выполняю так, это работает:

ResultSet resultSet = statement.executeQuery("SELECT NAME FROM schema_name.Table_name");

Итак, в основном мой вопрос - как я могу избежать рефакторинга всех запросов?

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

searchpath определяет порядок и список схем для поиска неквалифицированных имен. По умолчанию это "$user", public, поэтому сначала ищется схема пользователя, а затем public.

Вы можете изменить этот заказ с помощью:

SET search_path TO schema_name,public;

Подробнее об этом здесь .

Вы можете настроить это после открытия соединения, например.

В качестве альтернативы вы можете установить его для пользователя один раз:

ALTER ROLE username SET search_path = schema_name,public;
0 голосов
/ 08 ноября 2018

Эта команда, как упоминалось выше, установит путь поиска для текущего сеанса

SET search_path TO schema_name,public;

Однако, если это необходимо сделать для всего сеанса, просто исправьте файл конфигурации - pgsql / 11 / data / postgresql.conf добавьте путь поиска

search_path = '"$user", YOUR_SCHEMA'

Перезагрузите БД.

0 голосов
/ 08 ноября 2018

Вы хотите поместить таблицы в Postgres в схему public (по умолчанию) или использовать путь поиска.

Документация объясняет это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...