1

自从从 9.5 迁移到 12 以来,我们在数据库日志中看到了很多错误。正在运行的查询是一个基本更新语句,它更改用户登录的日期。

2021-03-03 09:23:43.235 CET [18820] 错误:无法在只读事务中执行更新

当我们使用旧版本的 postgres 时,我们没有看到这些错误。

我已经检查了 default_transaction_read_only 并且设置为 off 是正确的。

为什么我现在会看到这个?

4

1 回答 1

3

请确认您不在只读事务中:

SHOW default_transaction_read_only;
SHOW transaction_read_only;

如果第一个 isoff和第二个 is on,您必须显式启动一个只读事务

BEGIN READ ONLY;

如果您不在只读事务中,唯一的解释是数据库处于恢复模式。

也许您连接到流复制备用服务器。

要验证,请查看以下是否返回“true”:

SELECT pg_is_in_recovery();
于 2021-03-08T15:34:38.357 回答