- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 PostgreSQL 运行 Rails 3,
我有一个迁移,更新数百万条小记录。
Record.find_each do |r|
r.doing_incredibly_complex_stuff
r.save!
puts "#{r.id} updated"
end
IRB::Abort: abort then interrupt!!
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activesupport-3.0.4/lib/active_support/whiny_nil.rb:46:in `call'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activesupport-3.0.4/lib/active_support/whiny_nil.rb:46:in `method_missing'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activerecord-3.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:978:in `flatten'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activerecord-3.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:978:in `block in select'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activerecord-3.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:977:in `map'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activerecord-3.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:977:in `select'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activerecord-3.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activerecord-3.0.4/lib/active_record/connection_adapters/abstract/query_cache.rb:56:in `select_all'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activerecord-3.0.4/lib/active_record/base.rb:467:in `find_by_sql'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activerecord-3.0.4/lib/active_record/relation.rb:64:in `to_a'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/activerecord-3.0.4/lib/active_record/relation.rb:356:in `inspect'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/railties-3.0.4/lib/rails/commands/console.rb:44:in `start'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/railties-3.0.4/lib/rails/commands/console.rb:8:in `start'
from /Users/clement/.rvm/gems/ruby-1.9.2-p136@gemset/gems/railties-3.0.4/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Record.tap do |record_class|
record_class.find_each do |r|
r.doing_incredibly_complex_stuff
r.save!
puts "#{r.id} updated"
end
end
=> Record(id: integer, ...)
最佳答案
都没有 ActiveRecord::Migration
也不是 find_each
做任何事情将您的代码包装在数据库事务中。 r.save!
将包含在单个事务中,该事务涵盖了保存的任何级联效果。
正如上面的评论,使用 update_all
或原始 execute
大规模更新会更快。我无法判断这是否适合您正在做的事情。此外,如果您遇到内存问题,您应该能够在 find_each
上调整批量大小。看看有没有效果。如果没有,您可能会在某处捕获这些物体。
关于ruby-on-rails - 长时间运行到死亡的迁移/find_each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5868501/
使用 PostgreSQL 运行 Rails 3, 我有一个迁移,更新数百万条小记录。 Record.find_each do |r| r.doing_incredibly_complex_stu
有没有办法在django中使用find_each? 根据 rails 文档: This method is only intended to use for batch processing of l
我有类似这样的代码。 @deliveries = User.find_uniq_deliveries(...) . . . (many conditions added using 'named_sc
我有这样的关系 users = User.joins(:occupation).includes(:occupation) count = 0 users.find_each do |u| cou
我有类似这样的代码。 @deliveries = User.find_uniq_deliveries(...) . . . (many conditions added using 'named_sc
我正在查看说明如何使用“find_each”方法的官方 Rails 文档。这是他们给出的例子 Person.where("age > 21").find_each do |person| pers
引用:http://api.rubyonrails.org/classes/ActiveRecord/Batches.html . 是执行find_each线程安全?换句话说,我可以做类似的事情吗 c
给定这个模型: class User < ActiveRecord::Base has_many :things end 然后我们可以这样做:: @user = User.find(123) @u
我收到以下错误: PGError: ERROR: operator does not exist: character varying >= integer LINE 1: ...CT "game
我尝试使用 ActiveRecord 的 find_each 方法运行大约 50,000 条记录的查询,但它似乎忽略了我的其他参数,如下所示: Thing.active.order("created_
我有一个 Rails 应用程序,可以处理 mysql 数据库中的大量(数百万)条记录。一旦开始工作,其内存使用量就会以每秒 50MB 的速度快速增长。使用 oink 等工具,我能够将根本原因缩小到一个
我正在尝试编写一个函数,该函数按一个非常大的表(数百万行)中的某些列进行分组。有什么方法可以让 find_each 处理这个问题,或者如果我不想按 id 列排序是不可能的吗? 我查询的 SQL 是:S
我可以像这样使用 Rails find_each 方法: User.find_each(:batch_size => 10000) do |user| ------ end 使用 find_eac
因为我从物化 View 中提取了数千条记录 Matview , 我想用 find_each将其分成批处理以释放内存。 但是,当我运行以下命令时: Matview.where('p_id > 100')
在 Rails 中,find_each和 where用于从 ActiveRecord 支持的数据库中检索数据。 您可以将查询条件传递给where,例如: c = Category.where(:nam
我正在从我的数据库中加载数据,并且正在使用分组依据进行求和计算。 ElectricityReading.sum(:electricity_value, :group => "electricity_t
我正在尝试逐步浏览使用 find_each 检索到的记录列表。 我根据此 stack overflow post 中的答案构建了我的 Controller 代码。 ,但我仍然收到“没有给出 block
我有一个包含超过 50 万条记录的表,目前我正在以这种方式获取数据: Account.find_each(:conditions =>{:status =>STATUS[:waiting]}) d
我想知道如何在 rspec 中测试 find_each 调用。我习惯于简单地 stub 我希望我的模型返回的内容,因此我不会像这样依赖数据库中的测试数据: MyClass.stub(:find).an
我是一名优秀的程序员,十分优秀!