2017-09-27 90 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'同样的问题。 –

相关问题