如何在 OS X 上使用 ruby 2.3 解决 "incompatible library version" for mysql2 gem?

How do I resolve "incompatible library version" for mysql2 gem with ruby 2.3 on OS X?

我正在使用 ruby 2.3,在 gem 文件中,我列出了 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,但都无济于事。

如何解决这个问题?

我最终用 gem pristine --all

解决了这个问题

我已经用 gem pristine mysql2 然后 spring stop 解决了这个问题。

我遇到了同样的问题。我安装了 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 服务器配置编译库

因此 mysql2 gem 必须卸载并使用正确的 ruby 库重新安装并使用正确的 mysql 配置进行编译。

命令如下。

gem uninstall mysql2
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config --with-opt-lib=/where/my/ruby22/lib_was_located/

我在移动到 Ubuntu 16.04

时遇到了这个问题

以下方法成功了

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

运行 sudo gem pristine mysql2 对我不起作用。

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

唯一对我有用的是

gem 安装 nokogiri -v 1.10.2

之后就好了