Postgres忽略search_path参数

时间:2015-03-11 18:34:57

标签: c# postgresql npgsql pgbouncer

我有一个C#app连接到postgres数据库,通过pg_bouncer,使用Npgsql。在我的连接字符串中,我包含SearchPath。 Npgsql选择此项并在启动数据包中设置search_path参数。

Pg_bouncer似乎不喜欢search_path参数,这会导致初始连接失败(Unsupported startup parameter: search_path)。为了解决这个问题,我们将它列在pg_bouncer的ignore_startup_parameters列表中。

现在连接很好地连接到数据库,但完全忽略连接字符串中声明的任何SearchPath。现在,每个查询都不是命中正确的模式,而是从Public模式中选择。

如何让Postgres再次尊重SearchPath?

1 个答案:

答案 0 :(得分:0)

您可以为要连接的角色设置默认search_path(永久):

ALTER ROLE foo SET search_path=blarg,public;

或者对于整个数据库,具体取决于您的具体要求。您甚至可以在会话/事务的顶部发出一个简单的SET语句。有多种方法可以在Postgres中设置search_path。详细说明: