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

Posted

技术标签:

【中文标题】如何在 OS X 上使用 ruby​​ 2.3 解决 mysql2 gem 的“不兼容的库版本”?【英文标题】:How do I resolve "incompatible library version" for mysql2 gem with ruby 2.3 on OS X? 【发布时间】:2016-04-04 19:56:38 【问题描述】:

我使用的是 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,都无济于事。

我怎样才能解决这个问题?

【问题讨论】:

我在相同的 gem 版本中遇到了同样的问题 - 我正在使用续集,不确定你是否在使用,或者它是否有所作为。你解决了这个问题吗? 另外,在arch linux上使用mariadbclient 不,还没有。我正在使用 OS X。 【参考方案1】:

唯一对我有用的是

gem install nokogiri -v 1.10.2

之后就好了。

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

下面的方法成功了

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

【讨论】:

【参考方案4】:

我遇到了同样的问题。我安装了 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​​ 库重新安装并使用正确的 mysql 配置进行编译。

以下是命令。

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

【讨论】:

【参考方案5】:

我已经用gem pristine mysql2spring stop 解决了这个问题。

【讨论】:

【参考方案6】:

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

【讨论】:

伟大的作品。请您解释一下为什么它不起作用以及如何解决这个问题? 了解它的样子justinweiss.com/articles/3-quick-gem-tricks

以上是关于如何在 OS X 上使用 ruby​​ 2.3 解决 mysql2 gem 的“不兼容的库版本”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Mac OS X上安装 Ruby运行环境

如何使用 rvm 在 OS_X 10.9 上安装 ruby​​ 2.1.0? (没有可用的二进制红宝石:osx/10.9/x86_64/ruby)

如何在mac os x上安装 ruby运行环境

如何在Mac OS X上安装 Ruby运行环境

如何在Mac OS X上安装 Ruby运行环境

ruby运行环境怎么在mac os x上安装