【问题标题】:Postgres ignoring search_path parameterPostgres忽略search_path参数
【发布时间】:2015-05-13 17:15:47
【问题描述】:

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

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

连接现在可以正常连接到数据库,但完全忽略了连接字符串中声明的任何 SearchPath。现在,每个查询都不是命中正确的架构,而是从公共架构中进行选择。

如何让 Postgres 再次尊重 SearchPath?

【问题讨论】:

    标签: c# postgresql npgsql pgbouncer


    【解决方案1】:

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

    ALTER ROLE foo SET search_path=blarg,public;
    

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

    【讨论】:

    • 是的,您的第一个建议是我将依靠的。只是希望找到当前问题的快速解决方案,以避免任何额外的工作。鉴于我们当前的系统,更改我们用户的默认搜索路径或发出 set 语句将涉及一些重新设计。
    猜你喜欢
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2013-03-28
    • 2011-07-03
    • 2011-12-01
    • 2016-04-21
    相关资源
    最近更新 更多