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

ActiveRecord ::StatementInvalid :PG InFailedSqlTransaction

Aucune des autres réponses ne corrige la cause première du problème.

Le problème est que lorsque Postgres lève une exception, il empoisonne les futures transactions sur la même connexion.

La solution consiste à annuler la transaction incriminée :

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

  raise e
end

Voir référence.