首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于数据库维护的Rails旁路超时

用于数据库维护的Rails旁路超时
EN

Stack Overflow用户
提问于 2014-04-16 22:16:37
回答 1查看 85关注 0票数 0

我有一个rails应用程序,它包含一个模型= workorder

该数据库包含22,468个工作订单,其wonum13-开头。我想删除它们。workorder有几个带有has-many的表,所以我想通过编程来实现它,而不是直接针对数据库使用SQL。

这是我试图使用的代码:

代码语言:javascript
复制
<div class="span11">
  <h4>Records Deleted: </h4>
  <%= Workorder.where("wonum like ?", "13-%").count %>
  <%= Workorder.where("wonum like ?", "13-%").destroy_all %>
</div>

我正在我的Mac上运行这段代码。一旦我清理了数据库,我会把它上传到Heroku。

我遇到的问题是,代码需要很长时间才能运行,而且我会得到超时错误。

问题:

1)这是清理数据库的合乎逻辑的方法吗?

2)如何绕过此代码的任何超时?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 22:55:26

这可能是因为所有的记录都被加载到内存中。在批次中尝试处理

代码语言:javascript
复制
Workorder.where("wonum like ?", "13-%").find_each { |wo| wo.destroy }

正如布拉德所提到的,您可以使用delete_all,但是只有在不需要删除任何关联模型的情况下才能这样做。

要回答(2),这不是清理数据库的逻辑方法(使用前端的链接)。创建一个rake任务,或者从控制台与数据库交互(运行rails console)。

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

https://stackoverflow.com/questions/23121134

复制
相关文章

相似问题

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