Rails 3 - MySQL 客户端库版本不正确!为错误的客户端库版本编译的 Gem

Posted

技术标签:

【中文标题】Rails 3 - MySQL 客户端库版本不正确!为错误的客户端库版本编译的 Gem【英文标题】:Rails 3 - Incorrect MySQL client library version! Gem compiled for the wrong client library version 【发布时间】:2012-05-28 04:26:51 【问题描述】:

我克隆了 github repo https://github.com/8bitpal/hackful,运行“bundle install”,现在运行“rake db:create”。但我收到一条错误消息:

Incorrect mysql client library version! This gem was compiled for 5.0.45 but the client library is 5.5.15.

试图了解有关我的 mysql 设置的更多信息:

$ mysql_config --version
$ 5.0.45

$ mysql
$ mysql> SELECT version();
+-----------+
| version() |
+-----------+
| 5.1.57    | 
+-----------+

由于我很少做系统管理员的工作,我对如何解释这些信息感到有点迷茫,即为什么提到“客户端库 5.5.15”,在使用 mysql2 gem 时,这种最低版本是 mysql 版本吗?

无论如何,我对 SO 进行了更多研究并找到了这个线程 Ruby mysql2 gem compiled for wrong mysql client library version。这个问题和我的差不多:

使用 apt-get 将 MySQL 更新到 5.5 后,mysql2 gem 停止了 工作。

这是错误:

不正确的 MySQL 客户端库版本!这个 gem 是为 5.5.17 但客户端库是 5.1.58。 (运行时错误)

该线程中的答案:

我在使用 Ubuntu Server 11.04 和 Percona Server,我做的是:

将 /usr/lib/libmysqlclient.so.16.0.0 替换为 /usr/lib/libmysqlclient.so.18.0.0

我的问题是我没有这样的文件:

ls /usr/lib/mysql
libdbug.a       libmyisam.a     libmysqlclient.a    libmysqlclient_r.a  libmystrings.a      libvio.a
libheap.a       libmyisammrg.a      libmysqlclient.la   libmysqlclient_r.la libmysys.a

具有类似主题的大多数其他主题都是关于 Windows 的,但我使用的是 OS X。有什么想法可以尝试下一步吗?有关我的设置的更多信息:OS X Lion、rvm、Rails 3.1.3、ruby 1.9.2p290。宝石清单:

*** LOCAL GEMS ***

actionmailer (3.1.3)
actionpack (3.1.3)
activemodel (3.1.3)
activerecord (3.1.3)
activeresource (3.1.3)
activesupport (3.1.3)
addressable (2.2.7)
arel (2.2.1)
bcrypt-ruby (3.0.1)
builder (3.0.0)
bundler (1.0.21)
cancan (1.6.5)
capybara (1.1.2)
capybara-webkit (0.10.1)
childprocess (0.3.0)
coderay (1.0.5)
coffee-rails (3.1.1)
coffee-script (2.2.0)
coffee-script-source (1.2.0)
cucumber (1.1.4)
cucumber-rails (1.2.1)
database_cleaner (0.7.1)
delayed_job (3.0.0)
delayed_job_active_record (0.3.1)
devise (2.0.0)
diff-lcs (1.1.3)
erubis (2.7.0)
execjs (1.3.0)
factory_girl (2.6.3)
factory_girl_rails (1.7.0)
faker (1.0.1)
fakeweb (1.3.0)
ffi (1.0.11)
fileutils (0.7)
gherkin (2.7.6)
growl (1.0.3)
guard (1.0.3)
guard-bundler (0.1.3)
guard-cucumber (0.7.5)
guard-rspec (0.7.2)
guard-spork (0.8.0)
hike (1.2.1)
i18n (0.6.0)
jquery-rails (1.0.19)
json (1.6.5)
launchy (2.0.5)
libv8 (3.3.10.4 x86_64-darwin-11)
mail (2.3.0)
make_voteable (0.1.1)
method_source (0.7.1)
mime-types (1.17.2)
multi_json (1.0.4)
mysql (2.8.1)
mysql2 (0.3.11)
nokogiri (1.5.0)
orm_adapter (0.0.6)
polyglot (0.3.3)
pry (0.9.8.4)
rack (1.3.6)
rack-cache (1.1)
rack-mount (0.8.3)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.1.3)
rails_autolink (1.0.5)
railties (3.1.3)
rake (0.9.2.2)
rb-fsevent (0.9.1)
rdiscount (1.6.8)
rdoc (3.12)
rest-client (1.6.7)
rmagick (2.13.1)
rspec (2.8.0)
rspec-core (2.8.0)
rspec-expectations (2.8.0)
rspec-mocks (2.8.0)
rspec-rails (2.8.1)
rubyzip (0.9.5)
sass (3.1.12)
sass-rails (3.1.5)
selenium-webdriver (2.18.0)
slop (2.4.4)
spork (0.9.2)
sprockets (2.0.3)
sqlite3 (1.3.5)
term-ansicolor (1.0.7)
therubyracer (0.9.9)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
tzinfo (0.3.31)
uglifier (1.2.2)
warden (1.1.0)
xpath (0.1.4)

更新 我检查了为 mysql 安装的自制软件。当我理解正确时,这应该是mysql客户端库版本:

$ ls /usr/local/Cellar/mysql
$ 5.5.15

现在我需要将 mysql_config 更新到 5.5.15 吗?

更新 2 解决了。这个成功了:

gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.5.15/bin/mysql_config

来源:Install the mysql2 gem for a specific mysql client version?

【问题讨论】:

你是怎么安装mysql的?通过 brew 还是从源代码? 不确定了,可能是任何东西:macports、source、brew。如何查看? 使用which 命令并按照目录返回到它的安装点。 据我所知:mysql客户端库(5.5.15版)来自brew,见上面的更新。 ctielly79,nickpellant:我可以解决问题,请参阅更新。无论如何,感谢您的努力。 【参考方案1】:

在自制软件中升级软件包后出现此问题。只需要告诉 mysql2 gem 重新编译它的非 ruby​​ 组件。

假设 homebrew 设置正确,以下应该可以解决问题:

gem uninstall mysql2
gem install mysql2 # or bundle install

(取决于您的捆绑器配置,您可能需要做一些更复杂的事情,但这对我来说已经足够了)

【讨论】:

升级到 Ubuntu 15.04 时出现同样的问题。我刚刚删除了mysql2并重新安装。谢谢!【参考方案2】:

我已经根据这个教程解决了这个问题,它帮助我安装了正确版本的 mysql for rails http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/

【讨论】:

以上是关于Rails 3 - MySQL 客户端库版本不正确!为错误的客户端库版本编译的 Gem的主要内容,如果未能解决你的问题,请参考以下文章

mysql_connect():标头和客户端库次要版本不匹配库:100005

如何设置正确的 Ruby 版本以在 Aptana 3 中与我的 Rails 5 项目一起使用?

mysql2 gem 为错误的 mysql 客户端库编译

如何使 Rails 3.1 在 Debian 挤压上与 MySQL Server 5.1 一起工作?

Rails 3:如何正确显示“textarea”中的文本?

Ubuntu Nginx Ruby, Rails Mysql 安装