“sysread”:使用 Ruby 和 mysql 时系统调用中断 (Errno::EINTR)

发布于 2024-10-23 23:39:45 字数 92 浏览 1 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泛滥成性 2024-10-30 23:39:45

我正在做完全相同的事情(mechanize + mysql),我通过用 begin/rescue/end 子句包装我的 mysql 调用来解决它:

begin
  mysql_insert data
rescue Interrupt, Errno::EINTR
  mysql_close connection
  connection = mysql_connect
  retry
end

请注意,如果您在真实的东西中使用它,这会将您的代码置于无限循环中建议在上面加一些限制器。所有的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:

begin
  mysql_insert data
rescue Interrupt, Errno::EINTR
  mysql_close connection
  connection = mysql_connect
  retry
end

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.

春庭雪 2024-10-30 23:39:45

我遇到了同样的错误。就我而言,这是由 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文