Postgres 文档说ALTER SYSTEM
将给定的参数值写入postgresql.auto.conf file
,除了postgresql.conf
.
我很好奇alter database set configuration parameter
细节存储在哪里。
数据库级别的设置不存储在任何配置文件中,而是存储在pg_db_role_setting
目录中,唯一的问题是如何将它们取出。
正如在类似情况下一样,psql
在这里可以提供巨大帮助。关键是\set ECHO_HIDDEN on
,然后显示不同元命令背后的查询。
在我的沙箱数据库之一中,我看到以下内容:
test=# \drds
List of settings
Role ? Database ? Settings
??????????????????????????????????????????????????????????????
alice ? ? log_statement=none ?
? ? work_mem=12MB
bob ? ? log_statement=all ?
? ? work_mem=64MB
luser ? ? log_statement=all
tom ? ? log_statement=all
? test ? search_path=test, public
? wacky ? default_transaction_read_only=true
Run Code Online (Sandbox Code Playgroud)
我们对没有指定用户的行感兴趣 - 这些正是您要询问的设置。随着ECHO_HIDDEN
上,您还可以获得以下查询(格式是我的):
SELECT rolname AS "Role",
datname AS "Database",
pg_catalog.array_to_string(setconfig, E'\n') AS "Settings"
FROM pg_catalog.pg_db_role_setting s
LEFT JOIN pg_catalog.pg_database d ON d.oid = setdatabase
LEFT JOIN pg_catalog.pg_roles r ON r.oid = setrole
ORDER BY 1, 2;
Run Code Online (Sandbox Code Playgroud)
可以简化此操作以仅获取特定于数据库的设置:
SELECT datname AS database,
pg_catalog.array_to_string(setconfig, E'\n') AS settings
FROM pg_catalog.pg_db_role_setting s
JOIN pg_catalog.pg_database d ON d.oid = setdatabase ORDER BY 1, 2;
database ? settings
????????????????????????????????????????????????
test ? search_path=test, public
wacky ? default_transaction_read_only=true
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
357 次 |
最近记录: |