PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

ActiveRecord::StatementInvalid:PG::Error:ERROR:não pode executar UPDATE em um erro de transação somente leitura no Heroku


A réplica nunca foi promovida. Ver comentários.

Você pode saber quando uma réplica está seguindo um servidor mestre porque:
SELECT pg_is_in_recovery();

retornará verdadeiro. Isso não pode retornar true em um servidor mestre porque o único momento em que um servidor mestre pode estar em recuperação é quando ele ainda está sendo inicializado - e você não pode se conectar a ele, portanto, não pode executar esse comando. Isso é verdade a partir de 9.2 e 9.3beta; isso pode mudar em versões futuras, portanto, se você estiver lendo isso e em uma versão mais recente, verifique se há uma função dedicada para verificar se o servidor é uma réplica.