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

Mar*_*rco 12 ruby mysql gem mysql2

使用apt-get将MySQL更新到5.5后,mysql2gem停止工作.

这是错误:

Incorrect MySQL client library version!
This gem was compiled for 5.5.17 but the client library is 5.1.58. (RuntimeError)
Run Code Online (Sandbox Code Playgroud)

我尝试用mysql_config重新安装,但它似乎没有什么区别..

gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)

相应地,我试着告诉bundle使用mysql-config编译mysql2但是仍然存在错误.

bundle config build.mysql2 --with-mysql-config=/usr/bin/mysql_config
bundle install
Run Code Online (Sandbox Code Playgroud)

当我尝试使用较旧版本的gem(v0.2.6)时,rails控制台会打开,但在运行任何类型的查询后都会崩溃.


在尝试最新版本的mysql2 gem时,这是完整的错误堆栈:

[marco@linode:/www] 07:29:00 AM: rails c
/users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/mysql2-0.3.10/lib/mysql2.rb:9:in `require': Incorrect MySQL client library version! This gem was compiled for 5.5.17 but the client library is 5.1.58. (RuntimeError)
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/mysql2-0.3.10/lib/mysql2.rb:9:in `<top (required)>'
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each'
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require'
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each'
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require'
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler.rb:122:in `require'
  from /www/config/application.rb:7:in `<top (required)>'
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/commands.rb:38:in `require'
  from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/commands.rb:38:in `<top (required)>'
  from script/rails:6:in `require'
  from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

编辑:我从缓存中删除了所有mysql2 gemspecs,通过apt-get卸载了所有与mysql相关的软件包并重新安装了所有内容,然后再次尝试使用mysql-config标志安装gem ..但这一切都证明是徒劳的.错误仍然存​​在.

编辑2:正如John Bachir所建议的,我确认mysql_config包含MySQL 5.5版.

Fra*_*let 12

晚会,但我刚刚做了

gem uninstall mysql2
gem install mysql2
Run Code Online (Sandbox Code Playgroud)

宝石路径是

$ bundle show mysql2
/var/lib/gems/1.9.1/gems/mysql2-0.3.16
Run Code Online (Sandbox Code Playgroud)


Shi*_*Ray 8

我在使用Ubuntu Server 11.04和Percona Server时遇到了同样的错误,我做的是:

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


seb*_*seb 7

我有这个问题,只需要重新编译宝石.我不知道是否有更多的编程方式与bundler,但我只是删除已编译的gem,然后重新运行bundler:

$ bundle show mysql2
/usr/local/rvm/gems/ruby-1.9.3-p385/bundler/gems/mysql2-32dd7e5bbeba
$ rm -rf /usr/local/rvm/gems/ruby-1.9.3-p385/bundler/gems/mysql2-32dd7e5bbeba
$ bundle
Run Code Online (Sandbox Code Playgroud)