sql >> Base de Datos >  >> RDS >> PostgreSQL

ActiveRecord::StatementInvalid:PG InFailedSqlTransaction

Ninguna de las otras respuestas soluciona la causa raíz del problema.

El problema es que cuando Postgres lanza una excepción, envenena transacciones futuras en la misma conexión.

La solución es deshacer la transacción infractora:

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

  raise e
end

Ver referencia.