Ruby mysql2 gem скомпилирован для неверной версии клиентской библиотеки mysql - PullRequest
12 голосов
/ 15 ноября 2011

После обновления MySQL до 5.5 с помощью apt-get гем mysql2 перестал работать.

Вот ошибка:

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

Соответственно, я попытался указать bundle для компиляции mysql2 с помощью mysql-config, но все равно ошибка остается ..

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

Когда я пыталсястарая версия gem (v0.2.6) консоль rails открывается, но вылетает, когда я запускаю любой тип запроса.


Вот полный стек ошибок при попытке попробовать самую последнюю версию gem mysql2:

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

Редактировать : я удалил все gemspecs mysql2 из кэша, удалил все пакеты, связанные с mysql, через apt-get и заново установил все заново, затем снова попытался установить гем сфлаг mysql-config .. но все это оказалось бесполезным.Ошибка остается.

Редактировать 2 : Как предположил Джон Бачир, я подтвердил, что mysql_config содержит MySQL версии 5.5.

Ответы [ 13 ]

0 голосов
/ 16 июня 2015

На моем компьютере мне пришлось удалить самоцвет, а затем перенаправить символическую ссылку /usr/local/mysql на правильную версию Homebrew:

ln -s /usr/local/bin/mysql /usr/local/mysql

Затем запустите bundle install.

0 голосов
/ 03 марта 2014

В моем случае у меня были различные файлы из libmysqlclient15 (от 2009 г.) и libmysqlclient16 (от 20012), оставленные в / usr / lib, возможно, из-за неудачного обновления Ubuntu.

Удаление файлов libmysqlclient15 (которые были связаны с libmysqlclient15.so) решило мою проблему.

0 голосов
/ 16 ноября 2011

Убедитесь, что /usr/bin/mysql_config действительно тот, который шел с 5.5.

...