Postgres 从 9.5 升级到 12 无法在只读事务中执行 UPDATE

问题描述

自从从 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();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...