他の回答はどれも根本原因を修正しません 問題の。
問題は、Postgresが例外を発生させると、同じ接続で将来のトランザクションをポイズニングすることです。
修正は、問題のあるトランザクションをロールバックすることです:
begin
ActiveRecord...do something...
rescue Exception => e
puts "SQL error in #{ __method__ }"
ActiveRecord::Base.connection.execute 'ROLLBACK'
raise e
end
参考資料を参照してください。