无法在dockerized PostgreSQL数据库中设置schema_name

时间:2018-02-11 18:59:47

标签: postgresql docker dockerfile database-schema search-path

我正在尝试设置PostgreSQL Docker容器。我想在启动时创建一个模式,并将search_path设置为该模式 我已经创建了一个初始化的.sql文件,并将其复制到/docker-entrypoint-initdb.d/文件夹,该文件夹由容器启动时的docker-entrypoint.sh文件执行。入口点文件来自the official docker library repo 此.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和public schemas,但没有solwa_dev架构!

为什么会发生这种情况?如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

运行SET search_path ..只会为当前打开的会话设置搜索路径。

要永久设置,您可以在角色级别执行此操作:

ALTER ROLE <role> SET search_path TO ...

数据库级别:

ALTER DATABASE <db> SET search_path TO ...

或系统范围内的postgresql.conf中的search_path setting

有关详细信息,请参阅this answer