用网络连接的数据库,一个表有百万行且有 100 多个字段。我做了一个 task 逐行对每条数据做计算,用的 all.each do。死机~ 我以为是写错了,到 rails console 下试试,什么都不做,只 each do 一下就挂了。应该是哪儿的问题呢?
all 是一次把所有数据都 select 再 each 这时候需要用 find_each 分页 each
https://api.rubyonrails.org/classes/ActiveRecord/Batches.html
thank you.
PG::SyntaxError: 错误:长度为 0 的分隔标示符 在 """" 或附近的 LINE 1: ...aacnamts".* FROM "saacnamts" ORDER BY "saacnamts"."" ASC LIM...
find_each 如果没有 ID,就报错。
如果你没有 ID 主键的话 参考一下这个 https://stackoverflow.com/questions/10834407/activerecord-find-each-and-postgres
出门遇贵人,真是太感谢您了。
相当于执行 select * from some_table,考虑到行数,这个本身就很慢。也许是这个还没返回。
如果 crash 的话,应该是内存爆掉了。
不过石锤还是要试试看。
解决方案其他人已经说了。
pg 的话建议用游标 https://github.com/afair/postgresql_cursor