ruby-on-railspostgresqlactiverecordrollbackpg

ActiveRecord::StatementInvalid: PG InFailedSqlTransaction


I am trying to create an ActiveRecord Object.But I'm getting this error while creating it.

(0.1ms)  ROLLBACK
ActiveRecord::StatementInvalid: PG::InFailedSqlTransaction: ERROR:  current transaction is       aborted, commands ignored until end of transaction block

Any ideas folks regarding the issue.


Solution

  • None of the other answers fix the root cause of the issue.

    The problem is that when Postgres raises an exception, it poisons future transactions on the same connection.

    The fix is to rollback the offending transaction:

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

    See reference.