25006: read_only_sql_transaction
PostgreSQL¿Qué significa?
Se intentó un comando que modifica datos (INSERT/UPDATE/DELETE/DDL) dentro de una transacción de solo lectura. La transacción está configurada solo para lecturas. Pertenece a la Class 25 (invalid_transaction_state).
¿Por qué ocurre?
SET TRANSACTION READ ONLY o el ajuste default_transaction_read_only=on; o, lo más habitual, un intento de escritura en una réplica de lectura (hot standby / réplica de streaming). Los servidores standby son de solo lectura por definición.
Cómo solucionarlo
Dirija las escrituras al servidor primario; revise el enrutamiento de conexiones que separa lecturas y escrituras. Si se configuró por error: SET TRANSACTION READ WRITE; o, a nivel de servidor, default_transaction_read_only=off. Asegúrese de que su aplicación envíe el tráfico de lectura-escritura al nodo correcto.