1. ホーム
  2. ruby-on-rails

ActiveRecord::StatementInvalid: PG InFailedSqlTransaction。

2023-08-19 12:06:45

質問

ActiveRecordオブジェクトを作成しようとしているのですが、作成中にこのようなエラーが発生します。

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

この問題に関して、何かアイデアがあれば教えてください。

どのように解決するのですか?

他のどの回答も 根本原因 を表示します。

問題は、Postgresが例外を発生させると、同じ接続上の将来のトランザクションを汚染してしまうことです。

修正方法は、問題のあるトランザクションをロールバックすることです。

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

  raise e
end

参照 参照 .