问题描述
自从从 9.5 迁移到 12 以来,我们在数据库日志中看到了很多错误。正在运行的查询是更改用户登录日期的基本更新语句。
2021-03-03 09:23:43.235 CET [18820] 错误:无法在只读事务中执行更新
当我们使用较旧版本的 postgres 时,我们没有看到这些错误。
我已经检查了 default_transaction_read_only 并将其设置为关闭,这是正确的。
为什么我现在会看到这个?
解决方法
请确认您不在只读事务中:
SHOW default_transaction_read_only;
SHOW transaction_read_only;
如果第一个是 off
,第二个是 on
,则您必须使用
BEGIN READ ONLY;
如果您不在只读事务中,唯一的解释是数据库处于恢复模式。
也许您连接到流式复制备用服务器。
要验证,请查看以下是否返回“true”:
SELECT pg_is_in_recovery();