sql >> Databasteknik >  >> RDS >> PostgreSQL

ActiveRecord::StatementInvalid:PG InFailedSqlTransaction

Inget av de andra svaren fixar grundorsaken av frågan.

Problemet är att när Postgres tar upp ett undantag förgiftar det framtida transaktioner på samma anslutning.

Lösningen är att återställa den felande transaktionen:

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

  raise e
end

Se referens.



  1. skriva ut ett värde för en variabel i postgresql

  2. Använda LogMiner för att hitta aktuella ändringar

  3. Kontrollera att tabellen finns eller inte innan du skapar den i Oracle

  4. Hur skickar jag argument till ett PL/SQL-skript på kommandoraden med SQLPLUS?