首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rspec中的after钩子、PG::InFailedSqlTransaction中的错误

问Rspec中的after钩子、PG::InFailedSqlTransaction中的错误
EN

Stack Overflow用户
提问于 2014-01-21 16:25:10
回答 1查看 5.2K关注 0票数 9

我试图从一个模型规范文件中运行rspec,但是我得到了一个错误:“后置钩子中发生了错误”

后置钩子PG ::InFailedSqlTransaction: ERROR:当前事务被中止,命令被忽略,直到事务结束。发生在C :/ Ruby193/lib/./postgresql_适配器: 294处

我在谷歌上搜索了这个问题,并找到了将我的“database_cleaner”降级为“1.0.1”的建议。我说了,但不管用。有人知道怎么解决这个问题吗?提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2014-06-04 04:23:23

如果在事务范围内执行错误的SQL语句,则可能会发生这种情况,从该语句中挽救异常,然后尝试在同一事务中执行另一条SQL语句。

一旦事务中的一条语句失败,就不能在该事务中执行更多的语句。

下面是一个例子:

代码语言:javascript
复制
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语句。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21263678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档