【问题标题】:mysql timeout error in rails 3 when using delete_all and make! in step definition使用 delete_all 和 make 时,Rails 3 中的 mysql 超时错误!在步骤定义中
【发布时间】:2010-08-29 17:01:32
【问题描述】:

我在黄瓜步骤定义中使用了以下构造。

Given "I have following stuff" do
   Model.delete_all

   list.each { |i| Model.make!(:name => i) } 
end

(make! 来自机械师 2)。

上述步骤因 INSERT 语句超时而失败。当我为测试、环境打开控制台时,我可以毫无问题地执行每条语句。此外,如果我禁用事务功能,超时就会消失。

谁能帮我解决这个问题? (这在 rails 2.x 上没有问题)

(数据库 MySQL)

【问题讨论】:

  • 确切的错误信息是什么?
  • Mysql2::Error: Lock wait timeout exceeded;尝试重新启动事务: INSERT INTO model (values...) SQL (0.8ms) ROLLBACK SQL (39.5ms) ROLLBACK
  • 抱歉回复晚了。提前感谢您的帮助。

标签: activerecord transactions ruby-on-rails-3 cucumber


【解决方案1】:

这原来是我使用的机械师测试版的问题。我不是 100% 确定出了什么问题,但是当我使用纯 ActiveRecord 代码而不是 make 来创建对象时!成功了。

然后我切换到Factory_Girl而不是机械师,现在它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多