繁体   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