“sysread”:使用 Ruby 和 mysql 时系统调用中断 (Errno::EINTR)
我正在使用 mechanize 抓取一个网站并推送到 mysql 数据库。我经常收到这些系统读取错误,但我不确定解决方案是什么。我正在使用 Ruby-mysql gem。
I'm scraping a site with mechanize and pushing to a mysql db. I am getting these sys read errors a lot and I'm not sure what the solution is. I'm using the Ruby-mysql gem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我正在做完全相同的事情(mechanize + mysql),我通过用 begin/rescue/end 子句包装我的 mysql 调用来解决它:
请注意,如果您在真实的东西中使用它,这会将您的代码置于无限循环中建议在上面加一些限制器。所有的mysql_*都是我自己的方法。
I was doing the exact same thing (mechanize + mysql), and I solved it by wrapping my mysql calls with a begin/rescue/end clause:
Note that this puts your code in an infinite loop, if you use this in something real I would recommend putting some limiter on it. All the mysql_* are my own methods.
我遇到了同样的错误。就我而言,这是由 mysql-gem 的两种不同安装引起的,一种是使用 rvm gem 安装的,另一种是使用默认的 osx ruby 安装的。当我运行默认的 osx ruby 但使用捆绑器来获取 rvm 安装的 gem 时,二进制文件一定来自错误的 ruby。
检查 rvm 环境并仅使用 rvm 安装的 gems 和捆绑器修复了问题。
I was experiencing the same error. In my case it was caused by two different installations of the mysql-gem, one installed with
rvm gem
and the other from the default osx ruby. When I was running the default osx ruby but using bundler to get the rvm installed gem the binaries must have been from the wrong ruby.Checking rvm environment and using only rvm installed gems and bundler fixed the problem.