PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

ActiveRecord::StatementInvalid :PG::Error :ERREUR :impossible d'exécuter UPDATE dans une erreur de transaction en lecture seule dans Heroku

La réplique n'a jamais été promue. Voir les commentaires.

Vous pouvez savoir quand une réplique suit un serveur maître car :

SELECT pg_is_in_recovery();

renverra vrai. Cela ne peut pas renvoyer true dans un serveur maître car le seul moment où un serveur maître peut être en récupération est lorsqu'il démarre encore - et vous ne pouvez pas vous y connecter, vous ne pouvez donc pas exécuter cette commande. C'est vrai à partir de 9.2 et 9.3beta ; cela peut changer dans les futures versions, donc si vous lisez ceci et sur une version plus récente, recherchez une fonction dédiée pour vérifier si le serveur est une réplique.