C# Postgres忽略搜索路径参数
我有一个C#应用程序,通过pg#U bouncer,使用Npgsql连接到postgres数据库。在我的连接字符串中,我包括C# Postgres忽略搜索路径参数,c#,postgresql,npgsql,pgbouncer,C#,Postgresql,Npgsql,Pgbouncer,我有一个C#应用程序,通过pg#U bouncer,使用Npgsql连接到postgres数据库。在我的连接字符串中,我包括SearchPath。Npgsql会选择该选项,并在启动数据包中设置search\u path参数 Pg_bouncer似乎不喜欢search_path参数,这会导致初始连接失败(不支持的启动参数:search_path)。为了解决这个问题,我们在pg_bouncer的ignore_startup_参数列表中列出了它 连接现在可以很好地连接到数据库,但完全忽略连接字符串中声
SearchPath
。Npgsql会选择该选项,并在启动数据包中设置search\u path
参数
Pg_bouncer似乎不喜欢search_path
参数,这会导致初始连接失败(不支持的启动参数:search_path
)。为了解决这个问题,我们在pg_bouncer的ignore_startup_参数列表中列出了它
连接现在可以很好地连接到数据库,但完全忽略连接字符串中声明的任何SearchPath。现在,每个查询都会从公共模式中进行选择,而不是找到正确的模式
如何让Postgres再次尊重搜索路径?您可以为您正在连接的角色设置默认的
搜索路径(永久):
ALTER ROLE foo SET search_path=blarg,public;
或整个数据库,具体取决于您的具体要求。您甚至可以在会话/事务的顶部发出一个普通的SET
语句。在Postgres中设置搜索路径有多种方法。详细说明:
是的,你的第一个建议是我可以信赖的。我只是希望找到一个快速解决当前问题的方法,以避免任何额外的工作。更改用户的默认搜索路径或发出set语句将涉及到对当前系统的重新设计。