簡體   English   中英

后掛鈎錯誤,來自Rspec的PG :: InFailedSqlTransaction

[英]Error in an after hook, PG::InFailedSqlTransaction from Rspec

我試圖從模型spec文件運行rspec,但我收到此錯誤:“掛鈎后發生錯誤”

“掛鈎后發生錯誤PG :: InFailedSqlTransaction:錯誤:當前事務中止,命令被忽略,直到事務結束。發生在C:/ Ruby193 / lib /.../ postgresql_adapter:294”

我搜索了這個問題,我發現了將'database_cleaner'降級為'1.0.1'的建議。 我做了,但它不起作用。 有誰知道如何解決這個問題? 提前致謝!

如果在事務范圍內執行錯誤的SQL語句,從該語句中搶救異常,然后嘗試在同一事務中執行另一個SQL語句,則會發生這種情況。

一旦事務中的一個語句失敗,就不能再在該事務中執行語句。

這是一個例子:

ActiveRecord::Base.transaction do
  begin
    ActiveRecord::Base.connection.execute "A bad query"
  rescue => ex 
    puts ex.message
  end
  puts User.count
end

User.count引發PG::InFailedSqlTransaction因為之前的SQL語句引發了ActiveRecord::StatementInvalid並且被rescue吞沒了。

所以我會尋找在事務范圍內挽救的代碼,然后嘗試運行其他SQL語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM