我试图从一个模型规范文件中运行rspec,但是我得到了一个错误:“后置钩子中发生了错误”
后置钩子PG ::InFailedSqlTransaction: ERROR:当前事务被中止,命令被忽略,直到事务结束。发生在C :/ Ruby193/lib/./postgresql_适配器: 294处
我在谷歌上搜索了这个问题,并找到了将我的“database_cleaner”降级为“1.0.1”的建议。我说了,但不管用。有人知道怎么解决这个问题吗?提前感谢!
发布于 2014-06-04 04:23:23
如果在事务范围内执行错误的SQL语句,则可能会发生这种情况,从该语句中挽救异常,然后尝试在同一事务中执行另一条SQL语句。
一旦事务中的一条语句失败,就不能在该事务中执行更多的语句。
下面是一个例子:
ActiveRecord::Base.transaction do
begin
ActiveRecord::Base.connection.execute "A bad query"
rescue => ex
puts ex.message
end
puts User.count
endUser.count引发PG::InFailedSqlTransaction,因为上一条SQL语句引发了ActiveRecord::StatementInvalid,并且被rescue吞没。
因此,我将查找在事务范围内拯救的代码,然后尝试运行其他SQL语句。
https://stackoverflow.com/questions/21263678
复制相似问题