【问题标题】:Ruby 'mysql' gem segmentation faultRuby 'mysql' gem 分段错误
【发布时间】:2012-07-26 04:31:46
【问题描述】:

我正在使用 Ruby 1.9.3,我遇到了一个奇怪的问题,即“mysql”Ruby gem 在执行 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 个单词,查询可以正常工作,并在 21 日继续进行段错误,无论我在那里输入什么。

我在 Windows 上,使用 Ruby 1.9.3p0 和 ruby​​ 'mysql' gem 版本 2.8.1,以及 MySQL 5.5.16。我已经检查过我复制到 Ruby bin 文件夹中的 libmysql.dll 文件是否与我安装的 MySQL 版本相同。

您对可能出现的问题有任何其他提示吗?

【问题讨论】:

  • 您是否在 SO 中搜索过以前提出的问题?我可以发誓我本周早些时候看到了完全匹配。
  • @MikePurcell:我认为您指的是stackoverflow.com/questions/9667091/…,但问题还没有答案,而且操作系统不同,所以我认为情况可能会有所不同。我也读过其他的,但除了我已经尝试过的失败之外,没有关于如何解决这个问题的有用信息。
  • 你能用 'mysql2' gem 代替 'mysql' gem 试试这个吗?

标签: mysql ruby


【解决方案1】:

对于以后遇到此问题的任何人,以下是解决方案:

看来原因是这个版本的mysql gem不起作用 使用 MySQL 5.1 库。 [...] 下载 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/

【讨论】:

    猜你喜欢
    • 2012-01-13
    • 2013-09-15
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多