0

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

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

4

1 回答 1

3

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

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

ALTER ROLE <role> SET search_path TO ...

数据库级别:

ALTER DATABASE <db> SET search_path TO ...

或使用postgresql.conf中的search_path 设置在系统范围内

有关更多详细信息,请参阅此答案

于 2018-02-12T04:56:53.610 回答