12

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)

mysql_config で再インストールしようとしましたが、違いはないようです..

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

それに応じて、バンドルにmysql-configでmysql2をコンパイルするように指示しようとしましたが、それでもエラーは残ります..

bundle config build.mysql2 --with-mysql-config=/usr/bin/mysql_config
bundle install

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>'

編集:すべてのmysql2 gemspecをキャッシュから削除し、apt-getを介してすべてのmysql関連パッケージをアンインストールし、すべてを新たに再インストールしてから、mysql-configフラグを使用してgemを再度インストールしようとしました..しかし、すべて無駄であることが判明しました。エラーは残ります。

編集 2 : John Bachir が示唆したように、mysql_config に MySQL バージョン 5.5 が含まれていることを確認しました。

4

14 に答える 14

12

パーティーに遅れましたが、私はちょうどやった

gem uninstall mysql2
gem install mysql2

[ジェム パス]

$ bundle show mysql2
/var/lib/gems/1.9.1/gems/mysql2-0.3.16
于 2014-08-02T04:46:54.387 に答える
8

Ubuntu Server 11.04 と Percona Server を使用しているときに同じエラーが発生しました。

/usr/lib/libmysqlclient.so.16.0.0と置き換えます/usr/lib/libmysqlclient.so.18.0.0

于 2011-11-22T06:55:44.617 に答える
3

同様の問題に遭遇しました:

MySQL クライアント ライブラリのバージョンが正しくありません。この gem は 5.6.12 用にコンパイルされましたが、クライアント ライブラリは 5.5.28 です。

そして、Mac 上の私の MySQL バージョン:

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.12, for osx10.8 (x86_64) using  EditLine wrapper

によってインストールされた mysql2 gembundle installは mysql2-0.3.13 です

Gemfile で mysql2 gem を古いバージョンに設定するだけで、この問題を解決しました。

gem 'mysql2', '0.2.6'

'0.2.6'うまくいかない場合は、別の古いバージョン番号を試すことができます。

于 2013-08-06T03:30:06.370 に答える
1

上記のすべての回答を試してみましたが、最終的なアプローチはかなり単純でした。バンドルされている gem スタック全体を削除し、すべてを再インストールしました。それは最終的にmysqlクライアントの問題を回避しました。すなわち

rm -rf /Users/sjohnson/.rvm/gems/ruby-1.9.3-p484@adp_rails3
バンドル インストール

于 2015-04-03T18:52:31.640 に答える
1

C プログラムを知っている場合は、このメッセージを削除できます。省略します。

  1. この mysql.gem を開きますmysql-2.9.1.gem\data.tar.gz\data.tar\ext\mysql_api\mysql.c

  2. 「この宝石はのためにコンパイルされました」を見つけ、このif文を削除します。

    if (lib[i] != MYSQL_SERVER_VERSION[i]) { Line 1897: rb_raise(rb_eRuntimeError, "Incorrect MySQL client library version! This gem was compiled for %s but the client library is %s.", MYSQL_SERVER_VERSION, lib); }
    

Windows システムにローカルの gemfile をインストールするには、sys-variable を設定する必要があります。SET HOMEDRIVE=c: エラー: Gem の実行中に ... (Errno::EINVAL) 無効な引数 @ rb_file_s_stat - U:/

ローカルの gem ファイルをインストールします。C:\Rails>gem install --local mysql-2.9.1.gem --install-dir=c:/tmp --platform= ruby​​ -- --with-mysql-dir=C:/Rails/mysql-connector -c mysql-connector-c mysql http://dev.mysql.com/downloads/connector/c/にアクセスします。バージョンは気にしません。

再試行。「mysql」が必要

于 2016-05-31T02:22:13.413 に答える
1

ライブラリ ファイルを移動するのではなく、システムのパッケージ リストを確認することもできます。apt-get を使用して 5.5 にアップグレードした場合、不要になった 5.1 ライブラリがまだ残っている可能性があります。たとえば、同様の問題が発生したシステムでは、まだ 5.1 ライブラリがありました。

$ sudo dpkg -l | grep mysql
ii  libmysqlclient-dev               5.5.13-rel20.4-136.lucid                 Percona Server database development files
ii  libmysqlclient16                 5.1.61-rel13.2-431.lucid                 Percona Server database client library
ii  libmysqlclient18                 5.5.13-rel20.4-136.lucid                 Percona Server database client library

5.5 ライブラリを 5.1 ライブラリにコピーするのではなく、削除できるはずです。

$ sudo apt-get remove libmysqlclient16

私たちにとって、これは以前に提案されたライブラリの名前変更ソリューションよりも信頼性が高かった.

于 2012-04-13T21:50:49.150 に答える
0

/usr/bin/mysql_configそれが実際に 5.5 に付属しているものであることを確認してください。

于 2011-11-16T05:04:02.157 に答える
0

私の場合、libmysqlclient15 (2009 年日付) および libmysqlclient16 (20012 年日付) からのさまざまなファイルが /usr/lib に残っていました。これはおそらく、失敗した Ubuntu のアップグレードによるものです。

libmysqlclient15 ファイル (libmysqlclient15.so にリンクされていた) を削除すると、問題が解決しました。

于 2014-03-02T21:00:19.190 に答える