`sysread ': прерванный системный вызов (Errno :: EINTR) при использовании Ruby и mysql - PullRequest
3 голосов
/ 19 марта 2011

Я очищаю сайт с помощью механизатора и отправляю в базу данных mysql.Я получаю эти ошибки чтения системы много, и я не уверен, что решение.Я использую самоцвет Ruby-mysql.

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

Я делал то же самое (mechanize + mysql), и я решил это, обернув мои вызовы mysql предложением begin / rescue / end:

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

Обратите внимание, что это помещает ваш код вбесконечный цикл, если вы используете это в чем-то реальном, я бы порекомендовал установить некоторые ограничения.Все mysql_ * мои собственные методы.

1 голос
/ 22 августа 2011

Я столкнулся с той же ошибкой. В моем случае это было вызвано двумя разными установками mysql-gem, одна из которых установлена ​​с rvm gem, а другая - из стандартного osx ruby. Когда я запускал osx ruby ​​по умолчанию, но с помощью bundler для получения установленного гема rvm бинарные файлы должны были быть из неправильного ruby.

Проверка среды rvm и использование только установленных гемов и rvm исправили проблему.

...