Не удается установить имя_схемы в докеризованной базе данных 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
Смотрите этот ответ для более подробной информации.