2017-09-27 33 views
-1

我有這個控制方法Rails的Rspec的 - 的ActiveRecord :: StatementInvalid:PG :: InFailedSqlTransaction:

def dashboard 
method1 
method2 
method3 
.. 
end 

一切工作正常在development環境.. 但在test環境, 我得到這個錯誤後前幾種方法。

我使用binding.pry僅高於其經常拿錯誤的行檢查,

我不能運行任何查詢eg: Account.first 但同樣Account.first作品dev環境

錯誤,當我在test環境中運行:

ActiveRecord::StatementInvalid: PG::InFailedSqlTransaction: ERROR: current transaction is aborted, commands ignored until end of transaction block 
: SELECT "accounts".* FROM "accounts" ORDER BY "accounts"."id" ASC LIMIT 1 
from /home/qwinix/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/postgresql_adapter.rb:596:in `async_exec' 

請注意以下

  • 在其他控制器和相應規範中未發現錯誤。
  • 有在同一個控制器沒有錯誤從其他分支
  • 我添加一些代碼來method1,其執行在兩個環境就好了。我在method3之後得到了這些錯誤,我沒有碰過。

PS:我做了谷歌和搜索計算器的問題,沒有幫助

編輯:當我移動method1結束,我沒有得到任何錯誤,請解釋我這種行爲。

+0

你能分享你在哪裏得到實際的代碼錯誤。 –

+0

這條消息意味着你有錯誤_before_該語句,並沒有回滾事務,然後試圖執行查詢,你發佈在這裏和postgres抱怨。您需要啓用自動提交併查看哪些查詢出錯,使用try catch塊或檢查數據庫日誌。 –

回答

0

您是否嘗試重置測試數據庫?

bundle exec rails db:drop RAILS_ENV=test 
bundle exec rails db:create RAILS_ENV=test 
bundle exec rails db:schema:load RAILS_ENV=test 

或爲Rails版本低於5

bundle exec rake db:drop RAILS_ENV=test 
bundle exec rake db:create RAILS_ENV=test 
bundle exec rake db:schema:load RAILS_ENV=test 

或更短:

束EXEC耙分貝:復位RAILS_ENV =測試

+0

是的,我確實嘗試過這個'bundle exec rake db:drop db:create db:migrate RAILS_ENV = test'同樣的問題。 –

相關問題