Не удается установить имя_схемы в докеризованной базе данных PostgreSQL

Я пытаюсь настроить Dog-контейнер PostgreSQL. Я хочу создать схему при запуске и установить search_path к этой схеме.
Я создал файл инициализации.sql, и он скопирован в /docker-entrypoint-initdb.d/ папка, в которой он выполняется docker-entrypoint.sh файл при запуске контейнера. Файл точки входа взят из официального репозитория Docker Library.
Этот файл.sql содержит следующий код:

CREATE SCHEMA solwa_dev;
SET search_path TO solwa_dev;
-- table creations, sequences, other commands

Все выполняется правильно, но после завершения инициализации search_path не настроен соответственно. Если я наберу это в терминале:

docker exec -it <docker_container> psql -U postgres -c "show search_path;"

это показывает "$user", public", После того, как я использую ту же команду, чтобы SET search_path TO solwa_dev; он по-прежнему показывает как $ user, так и публичные схемы, но без схемы solwa_dev!

Почему это происходит и как я могу решить эту проблему?

1 ответ

Решение

Бег SET search_path .. будет только устанавливать путь поиска для текущего открытого сеанса.

Чтобы установить его навсегда, вы можете сделать это на уровне ролей:

ALTER ROLE <role> SET search_path TO ...

уровень базы данных:

ALTER DATABASE <db> SET search_path TO ...

или общесистемный с search_path настройка в postgresql.conf

Смотрите этот ответ для более подробной информации.

Другие вопросы по тегам