gpt4 book ai didi

npgsql - 恢复期间无法执行 unlisten

转载 作者:行者123 更新时间:2023-12-04 02:13:15 24 4
gpt4 key购买 nike

当我在我的连接字符串中使用 Pooling=True 时,出现错误“无法在恢复期间执行不监听”。

此错误发生在热备运行的复制/读取服务器上。

最佳答案

这在 3.2.7 版本中仍然存在。应该可以在热备用数据库上运行 SELECT 查询,但是当使用 Npgsql 执行此操作时,我们得到

PostgresException 25006: cannot execute UNLISTEN during recovery    
at Npgsql.NpgsqlConnector.<DoReadMessage>d__157.MoveNext()

看看the source确认在合并连接时,Npgsql 会在每个连接关闭后进行清理。清理操作之一是 UNLISTEN *,它在热备用数据库上失败,因为它会影响状态。

幸运的是,还有connection string parameters我们可以设置避免这种情况。正如最初的问题提到的,您可以禁用连接池。但是,在性能很重要的情况下,最好将 No Reset On Close=true; 添加到连接字符串中。

使用 No Reset On Close 确实存在将状态从一个命令泄漏到下一个命令的风险,但由于您处于只读模式,它不会影响您存储的数据。如果您正在使用游标、序列和临时表,请小心处理它们。从好的方面来说,它可能会略微提高您的查询速度。

关于npgsql - 恢复期间无法执行 unlisten,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36442576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com