无法在 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。
我正在尝试设置 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。