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

ActiveRecord::StatementInvalid:PG::Fejl:FEJL:kan ikke udføre UPDATE i en skrivebeskyttet transaktionsfejl i Heroku

Replikaen blev faktisk aldrig forfremmet. Se kommentarer.

Du kan se, hvornår en replika følger en masterserver, fordi:

SELECT pg_is_in_recovery();

vender tilbage sandt. Dette kan ikke returnere true i en masterserver, fordi det eneste tidspunkt, en masterserver kan være i recovery, er når den stadig starter op - og så kan du ikke oprette forbindelse til den, så du kan ikke køre den kommando. Det er sandt fra 9.2 og 9.3beta; dette kan ændre sig i fremtidige versioner, så hvis du læser dette og på en nyere version, skal du tjekke efter en dedikeret funktion til at kontrollere, om serveren er en replika.



  1. PostgreSQL-begrænsning, der bliver tjekket ved commit og ikke tidligere

  2. bruge en database til logning

  3. planlæg automatisk en php-scriptudførelse på et bestemt tidspunkt

  4. True/False vs 0/1 i MySQL