PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

ActiveRecord::StatementInvalid:PG::Error:ERROR:impossibile eseguire UPDATE in un errore di transazione di sola lettura in Heroku

La replica non è mai stata effettivamente promossa. Vedi commenti.

Puoi sapere quando una replica sta seguendo un server master perché:

SELECT pg_is_in_recovery();

tornerà vero. Questo non può restituire true in un server master perché l'unica volta in cui un server master può essere in ripristino è quando è ancora in fase di avvio e quindi non è possibile connettersi ad esso, quindi non è possibile eseguire quel comando. Questo è vero a partire da 9.2 e 9.3beta; questo potrebbe cambiare nelle versioni future, quindi se stai leggendo questo e su una versione più recente verifica la presenza di una funzione dedicata per verificare se il server è una replica.