Ошибка сегментации драгоценных камней в Ruby - PullRequest
3 голосов
/ 26 марта 2012

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

Это код, который выполняетзапрос:

def load
        dbh = Mysql::new($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME)
        begin
            res = dbh.query("SELECT word, type FROM words WHERE word = '#{dbh.escape_string(word)}';")
        rescue Mysql::Error => e
            puts "Error occurred during SQL query"
        end
        res.each do |row|
            @word = row[0]
            @type = row[1]
        end
        dbh.close if dbh
    end

Этот код вызывается каждый раз, когда пользователь вводит слово, для первых 20 слов запрос работает правильно и переходит к segfault 21-го, независимо от того, что я там вставил.

Я на Windows, использую Ruby 1.9.3p0 и ruby ​​'mysql' gem version 2.8.1, с MySQL 5.5.16.Я уже проверил, что файл libmysql.dll, который я скопировал в папку Ruby bin, является той же версией MySQL, которую я установил.

Есть ли у вас какие-либо подсказки о том, что может быть не так?

1 Ответ

1 голос
/ 26 июля 2012

Вот решение для тех, кто сталкивается с этим в будущем:

Кажется, причина в том, что эта версия mysql gem не работает с MySQL 5.1 lib. [...] Скачать MySQL 5.0 noinstall версия mysql-noinstall-5.0.89-win32.zip из http://dev.mysql.com/downloads/mysql/5.0.html. Извлечь libmysql.dll и скопируйте его в C: \ Ruby \ bin. Тогда проблема решена. я все еще работает MySQL 5.1. Но Ruby использует эту версию MySQL 5.0 dll.

Источник: http://fuyun.org/2010/01/ruby-mysql-adapter-on-windows/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...