如何在OS X上使用ruby 2.3和mysql2 gem时解决“不兼容的库版本”问题?

30

我正在使用Ruby 2.3版本,并在Gemfile中列出了mysql2 gem。但是当我尝试运行rake db:migrate时,出现以下错误:

/Users/me/.gem/ruby/2.3.0/gems/mysql2-0.4.2/lib/mysql2.rb:31:in `require': incompatible library version - /Users/me/.gem/ruby/2.3.0/gems/mysql2-0.4.2/lib/mysql2/mysql2.bundle (fatal)

我似乎无法解决这个问题。我已经通过Homebrew安装了Mysql 5.7,尝试更新bundle、卸载和重新安装mysql2宝石,但都没有用。

有什么方法可以解决这个问题吗?


我使用相同的 gem 版本遇到了相同的问题 - 我正在使用 Sequel,不确定你是否也在使用或者这是否有所区别。你已经解决了这个问题吗? - dax
同时,在 Arch Linux 上使用 Mariadbclient。 - dax
不,还没有。我正在使用OS X。 - croceldon
6个回答

52

我最终使用 gem pristine --all 解决了这个问题。


1
太棒了。您能否解释一下为什么它之前不能工作,以及这个修复方法是如何解决的? - Bagi
要了解它的功能,请查看https://www.justinweiss.com/articles/3-quick-gem-tricks/。 - Eduardo Santana

8
我已经通过执行gem pristine mysql2,然后再执行spring stop解决了这个问题。

0

我在切换到Ubuntu 16.04时遇到了这个问题

下面的方法解决了问题

sudo apt-get install g++
sudo apt-get install build-essential

0

对我起作用的唯一方法是

gem install nokogiri -v 1.10.2

之后就好了。


0

在我的情况下,运行sudo gem pristine mysql2没有生效。

我不得不卸载并重新安装mysql2宝石。


0

我遇到了同样的问题。我安装了ruby 2.3.4并使用rails 4.6.2。

有两个问题导致了这个问题,我使用的托管公司的支持团队帮助我解决了这个问题。

第一个问题是安装的mysql2库默认链接到ruby 1.8而不是ruby 2。

# lld ../2.2.0/mysql2-0.4.4/mysql2/mysql2.so
... 
...
libruby.so.1.8 => /usr/lib64/libruby.so.1.8 (0x00007f2af1f8a000)
...

第二个问题是使用已安装的mysql服务器配置编译lib。
因此,必须卸载mysql2 gem,并使用正确的ruby lib重新安装,并使用正确的mysql配置进行编译。
以下是命令。
gem uninstall mysql2
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config --with-opt-lib=/where/my/ruby22/lib_was_located/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接