25006: read_only_sql_transaction
PostgreSQLЧто это значит?
Внутри транзакции только для чтения была предпринята попытка выполнить изменяющую данные команду (INSERT/UPDATE/DELETE/DDL). Транзакция настроена только на чтение. Относится к классу 25 (invalid_transaction_state).
Почему возникает?
SET TRANSACTION READ ONLY или параметр default_transaction_read_only=on; либо, чаще всего, попытка записи на реплику для чтения (hot standby / потоковая реплика). Серверы standby по определению доступны только для чтения.
Как исправить
Направляйте запись на основной сервер; проверьте маршрутизацию соединений, разделяющую чтение и запись. Если параметр был установлен по ошибке: SET TRANSACTION READ WRITE; или на уровне сервера default_transaction_read_only=off. Убедитесь, что приложение отправляет трафик чтения-записи на правильный узел.