!在处理请求意外的错误:无法分配内存 [英] !! Unexpected error while processing request: failed to allocate memory

查看:213
本文介绍了!在处理请求意外的错误:无法分配内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮我解决这个错误。

我在从文本文件加载记录到数据库中使用Ruby脚本收到此错误。

这只是工作正常,如果我用少量的记录加载到database.But如果有大量的记录失败。

  CSV.foreach(文件名)做|在线|
    completePath =行[0]
    num_of_bps =行[1]

    completePath = cluster_path +'/'+ completePath
    索引节点= FileOrFolder.find_by_fullpath(completePath,:选择=>中ID)

    metric_instance = MetricInstance.find(:第一,:条件=> [?file_or_folder_id = AND dataset_id =,inode.id,dataset_id])
    add_entry(metric_instance.id,num_of_bps,num_of_bp_tests)
结束

高清self.add_entry(metaid,num_of_bps,num_of_bp_tests)
    进入= Bp.new
    entry.metric_instance_id = metaid
    entry.num_of_bps = num_of_bps
    entry.num_of_bp_tests = num_of_bp_tests
    entry.save
    返回入境
结束
 

解决方案

尝试是这样的:

  File.open方法(文件名)做| CSV |
  csv.each_line做|在线|
    CSV.parse(线)做|值|
      #在这里,你可以做你的操作
    结束
  结束
结束
 

这个方法是比较慢的,但应确保你没有得到的内存不足。

Please help me in solving this error.

I am getting this error while loading records from text files in to database using ruby scripts.

It just works fine if I use small number of records to load in to the database.But fails if there are large number of records.

CSV.foreach(fileName) do |line|
    completePath = line[0]                                                
    num_of_bps = line[1]

    completePath = cluster_path+ '/' + completePath
    inode = FileOrFolder.find_by_fullpath(completePath, :select=>"id") 

    metric_instance = MetricInstance.find(:first, :conditions=>["file_or_folder_id = ? AND dataset_id = ?", inode.id, dataset_id])
    add_entry(metric_instance.id, num_of_bps, num_of_bp_tests) 
end

def self.add_entry(metaid, num_of_bps, num_of_bp_tests)
    entry = Bp.new
    entry.metric_instance_id = metaid
    entry.num_of_bps = num_of_bps
    entry.num_of_bp_tests = num_of_bp_tests
    entry.save
    return entry
end  

解决方案

Try something like this:

File.open(fileName) do |csv|
  csv.each_line do |line|
    CSV.parse(line) do |values|
      # Here you can do your manipulation
    end
  end
end

This way is slower, but it should ensure you don't get out of memory.

这篇关于!在处理请求意外的错误:无法分配内存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆