PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

ActiveRecord::StatementInvalid:PG InFailedSqlTransaction

Никой от другите отговори не отстранява основната причина на въпроса.

Проблемът е, че когато Postgres повдигне изключение, то отравя бъдещи транзакции на същата връзка.

Поправката е да се върне обратно на нарушителната транзакция:

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

  raise e
end

Вижте справка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RoR:Не може да се промени_колона в postgres, добре в MySQL (MySQL за разработка, Postgres на Heroku)

  2. Spring Data JPA одитът не работи за метода за актуализиране на JpaRepository с анотация @Modifying, защо?

  3. PostgreSQL във възход:открития на Postgres за 2018 г. и тенденции за 2019 г.

  4. Създайте PostgreSQL база данни в движение, като използвате Hibernate, дори ако DB не съществува

  5. Условна функция за извеждане/закъснение PostgreSQL?