【发布时间】:2016-05-22 16:53:56
【问题描述】:
我在基于 OSX 10.11.3 的系统上成功安装了 mySQL 5.7.10 和用于 Ruby 的 mySQL gem。我现在正在尝试运行以下代码:
require 'mysql'
require 'cgi'
class MysqlSaver
def saveWordStats(globalWordStats,time)
con = Mysql.new 'localhost', 'x', 'x', 'x'
i = 0
for word in globalWordStats.keys[0..10000]
print "#{i}\r"
i+=1
stat = globalWordStats[word]
time = time
escaped_word = Mysql.escape_string(word)
begin
escaped_word = escaped_word.gsub("\\","")
escaped_word = escaped_word.gsub("/","")
escaped_word = escaped_word.gsub("-","")
escaped_word = "#{escaped_word}_word"
con.query("CREATE TABLE IF NOT EXISTS #{escaped_word}(percent DOUBLE, time INT)")
con.query("INSERT INTO #{escaped_word}(percent,time) VALUES('#{stat}','#{time}')")
rescue
puts "#{$!}"
end
end
con.close
puts "DONE"
end
end
此代码正常工作,没有任何错误。我能够在我的 mySQL 数据库中创建表和存储值。但是,如果我尝试使用此代码在我的数据库中创建/存储 >= ≈10.000 个值,则在脚本完成运行后,我将无法再连接到我的 mySQL 服务器:
mySQL.rb:5:in `new': Lost connection to MySQL server at 'reading initial communication packet', system error: 102 (Mysql::Error)
from /Users/david/Desktop/Birta2/mySQL.rb:5:in `saveWordStats'
from run.rb:84:in `<main>'
另外,重启 mySQL 服务器也无济于事(只有重启我的整个 mac 才有帮助!)。
发生错误后,我可以在 mySQL 日志文件中找到这条奇怪的行:
2016-02-11T18:20:51.177054Z 0 [Warning] File Descriptor 1098 exceedeed FD_SETSIZE=1024
有没有办法解决这个错误?
【问题讨论】:
-
这里是 MySQL 错误报告 bugs.mysql.com/bug.php?id=79125。目前似乎没有任何可用的修复程序。