我正在尝试使用 plpgpsq 的 current_setting() 和 set_config() 函数来更改我添加到 postgresql.conf 文件中的自定义设置的值。
这是我添加到 postgresql.conf 文件末尾的内容:
IntegrityPackage.NestLevel = 0
重新启动 PostgreSQL 服务后,当我想查看设置的值时,我得到以下结果:
select current_setting('IntegrityPackage.NestLevel');
current_setting |
----------------|
0 |
但是,当我尝试编辑该值时,收到一条错误消息:
select set_config('IntegrityPackage.NestLevel', 0, false);
ERROR: function set_config(unknown, bigint, boolean) doesn't exist.
Hint: No function corresponds to given name and argument types
You must add explicit type conversions
(由于错误消息是法语,因此从法语模糊翻译)
关于此的文档很少,因此我陷入困境,我想不出另一种方法来做到这一点。
编辑 - 确切的错误文本(在 psql 9.2 / postgresql 10.0 中)是:
ERROR: function set_config(unknown, integer, boolean) does not exist
LINE 1: select set_config('my.foo',obj_id::int ,false) from objects ...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
这会起作用:
select set_config('IntegrityPackage.NestLevel', '0', false);
我在下面遇到了同样的错误:
错误:函数 set_config(未知,整数,布尔)不存在
当
2
没有''
时,可以使用set_config()设置自定义选项,如下所示:
-- ↓
SELECT set_config('my.num', 2, false);
所以,我将
2
设置为''
,如下所示,然后我可以设置自定义选项而不会出错:
-- ↓ ↓
SELECT set_config('my.num', '2', false);