如何在OS X上使用ruby 2.3解析mysql2 gem的“不兼容的库版本”?

时间:2015-12-30 19:56:53

标签: ruby-on-rails ruby mysql2

我正在使用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,尝试更新捆绑包,卸载并重新安装mysql2 gem,但都无济于事。

我如何解决这个问题?

6 个答案:

答案 0 :(得分:39)

我最终用gem pristine --all

解决了这个问题

答案 1 :(得分:8)

我已使用gem pristine mysql2后跟spring stop解决此问题。

答案 2 :(得分:0)

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

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

首先,安装的mysql2 lib默认链接到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 server config

编译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/

答案 3 :(得分:0)

我在迁移到Ubuntu 16.04时遇到了这个问题

以下做了诀窍

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

答案 4 :(得分:0)

运行sudo gem pristine mysql2对我没用。

我必须卸载并重新安装mysql2 gem。

答案 5 :(得分:0)

唯一对我有用的是

gem安装nokogiri -v 1.10.2

之后,就可以了。