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

Can't set schema_name in dockerized PostgreSQL database

我正在尝试设置 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 模式,但没有 solwa_dev 模式!

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

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

要永久设置它,您可以在角色级别进行:

ALTER ROLE <role> SET search_path TO ...

数据库级别:

ALTER DATABASE <db> SET search_path TO ...

或系统范围内 search_path setting in postgresql.conf

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