25006: read_only_sql_transaction
PostgreSQL含义
在只读事务中尝试执行修改数据的命令(INSERT/UPDATE/DELETE/DDL)。该事务被配置为只能读取。属于 Class 25(invalid_transaction_state)。
原因
SET TRANSACTION READ ONLY 或 default_transaction_read_only=on 设置;或者最常见的情况:对只读副本(hot standby / 流复制副本)尝试写入。备库按定义就是只读的。
解决方法
将写入路由到主库;检查拆分读写的连接路由。如果是误设:SET TRANSACTION READ WRITE; 或在服务器范围内设置 default_transaction_read_only=off。确保应用将读写流量发送到正确的节点。