26

我经常编辑 pg_hda.conf 文件,我只是想知道是否有办法确保我刚刚写的内容是正确的。

到目前为止,我正在使用测试服务器来检查我的更改。

就像 Apache 有它的apache2ctl -t命令一样,Postgres 有类似的东西吗?

4

3 回答 3

16

很久了,但现在可以检查 pg_hba.conf 文件:

select pg_hba_file_rules();

此外,您可以使用 pg_file_settings 视图在 postgresql.conf 中定义错误:

select sourcefile, name,sourceline,error from pg_file_settings where error is not null;

示例输出:

postgres=# select sourcefile, name,sourceline,error from pg_file_settings where error is not null;
               sourcefile               |  name  | sourceline |                error
----------------------------------------+--------+------------+--------------------------------------
 /var/lib/pgsql/11/data/postgresql.conf | lalala |          1 | unrecognized configuration parameter

在这里我放了一些不好的东西来检查它是否是真的:)

于 2019-12-20T16:30:23.687 回答
14

没有类似的方法可以做到这一点apache2ctl。如果您重新加载配置文件并且出现语法错误,PostgreSQL 服务器将在日志中抱怨并拒绝加载新文件。因此,由于语法错误而搞砸的风险很小。(当然,这不能防止你写出语义错误的东西,但apache2ctl也不会那样做。)除此之外,在测试服务器中测试更改可能是个好主意,并拥有一个传播这些更改的系统以可控的方式改变生产。

于 2013-05-02T14:22:13.337 回答
5

参考:https ://dba.stackexchange.com/a/151457/177071

你有另一种方法来测试配置文件是否正确。

进入命令行,输入select pg_reload_conf();

postgres=# select pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)

这表明您的文件是正确的。否则它会失败。

于 2019-04-19T08:22:50.440 回答