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

ActiveRecord::StatementInvalid:PG InFailedSqlTransaction

Nessuna delle altre risposte risolve la causa principale del problema.

Il problema è che quando Postgres solleva un'eccezione, avvelena le transazioni future sulla stessa connessione.

La soluzione è ripristinare la transazione incriminata:

begin
  ActiveRecord...do something...
rescue Exception => e
  puts "SQL error in #{ __method__ }"
  ActiveRecord::Base.connection.execute 'ROLLBACK'

  raise e
end

Vedi riferimento.