25006: read_only_sql_transaction
PostgreSQL意味
読み取り専用トランザクション内でデータ変更コマンド (INSERT/UPDATE/DELETE/DDL) が試行された。トランザクションは読み取り専用に設定されている。Class 25 (invalid_transaction_state) に属する。
原因
SET TRANSACTION READ ONLY または default_transaction_read_only=on の設定。最も多いのは読み取りレプリカ (ホットスタンバイ/ストリーミングレプリカ) への書き込み試行。スタンバイサーバーは定義上読み取り専用である。
対処方法
書き込みをプライマリサーバーに振り向け、読み書きを分離する接続ルーティングを確認する。誤って設定された場合: SET TRANSACTION READ WRITE; またはサーバー全体で default_transaction_read_only=off。アプリケーションが読み書きトラフィックを正しいノードに送ることを確認する。