अन्य कोई भी उत्तर मूल कारण को ठीक नहीं करता है मुद्दे का।
समस्या यह है कि जब Postgres एक अपवाद उठाता है, तो यह उसी कनेक्शन पर भविष्य के लेन-देन में जहर घोल देता है।
आपत्तिजनक लेन-देन को रोलबैक करना ठीक है:
begin
ActiveRecord...do something...
rescue Exception => e
puts "SQL error in #{ __method__ }"
ActiveRecord::Base.connection.execute 'ROLLBACK'
raise e
end
संदर्भ देखें।