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

ActiveRecord::StatementInvalid:PG InFailedSqlTransaction


Nenhuma das outras respostas corrige a causa raiz da questão.

O problema é que quando o Postgres gera uma exceção, ele envenena transações futuras na mesma conexão.

A correção é reverter a transação ofensiva:
begin
  ActiveRecord...do something...
rescue Exception => e
  puts "SQL error in #{ __method__ }"
  ActiveRecord::Base.connection.execute 'ROLLBACK'

  raise e
end

Veja referência.