mysql2 драгоценный камень, скомпилированные для неправильная клиентской библиотеки MySQL


при попытке подключиться к серверу mysql через мое приложение rails, я получаю следующую ошибку

D:/Program_Files/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': 
Incorrect MySQL client library version! This gem was compiled for 6.0.0 but the client library is 5.0.27. (RuntimeError)

Как я могу исправить это?

8 62

8 ответов:

у меня была та же проблема, что и у вас, или, по крайней мере, симптом был тот же.

Background: я использовал Rails 3, mysql2 gem и MySQL community server версии 5.5.21 (32-бит), установленные локально на моей машине Windows. Я схватил клиентскую библиотеку (libmysql.dll) из установки MySQL и скопировал его в мою установку ruby .

когда я подбежал bundle exec rake db:create, я получил то же сообщение об ошибке, что и вы, и я подумал: "Эй, как клиентская библиотека может быть устаревшей когда я получил его из последнего выпуска MySQL?"

есть полезное сообщение, которое отображается, когда вы gem install mysql2. К сожалению, если вы устанавливаете gem с Bundler, Bundler ест сообщение. Вот это:

=========================================================================
You've installed the binary version of mysql2. It was built using MySQL 
Connector/C version 6.0.2. It's recommended to use the exact same version
to avoid potential issues.

At the time of building this gem, the necessary DLL files where available
in the following download:

http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip/from/pick

And put lib\libmysql.dll file in your Ruby bin directory, for example
C:\Ruby\bin

следуя этим инструкциям, решил проблему для меня.

Ссылка Ссылка

удаление и переустановка gem часто решает эту проблему без необходимости загружать и перемещать файлы вручную. Из вашего каталога приложений rails:

> gem uninstall mysql2

You have requested to uninstall the gem:
    mysql2-0.3.11
database_cleaner-0.9.1 depends on [mysql2 (>= 0)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn]  Y
Successfully uninstalled mysql2-0.3.11

> bundle install

Fetching gem metadata from http://rubygems.org/......
Fetching gem metadata from http://rubygems.org/..
Using rake (0.9.2)
Using i18n (0.6.1)
... <SNIP> ...
Installing mysql2 (0.3.11) with native extensions
... <SNIP> ...
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Если вы используете 64-битную версию mysql и 32-битную версию ruby, то проверьте это решение на http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/

вам в основном нужно загрузить один соединитель с веб-сайта mysql и скомпилировать mysql или mysql2 с помощью загруженного вами соединителя.

для Ruby 1.9.2:

gem install mysql --platform=ruby -- --with-mysql-dir=C:/mysql-connector-c-noinstall-6.0.2-win32

для Ruby 1.9.3: (показывает вариант mysql2)

gem pristine mysql2 -- --with-mysql-config=C:\mysql-connector-c-noinstall-6.0.2-win32    

Примечание. использование прямых косых черт для каталога, где MySQL Connector/C был извлечен.

У меня была такая же проблема:

Incorrect MySQL client library version! This gem was compiled for 5.5.29 but the client library is 5.6.17.

проблема для меня заключалась в том, что у меня были обе версии, 5.5.29 и 5.6.17, установленные на моей машине. Я понятия не имею как. Когда я связал его автоматически выбрал версию 5.5.29. Я удалил этот, а затем переустановил свой драгоценный камень, и это исправило проблему.

я обнаружил совершенно другую причину этой проблемы. Я использовал MySQL gem. Я построил mysql2 gem, но я забыл обновить свою базу данных.в формате YML. С драгоценным камнем mysql2, он должен сказать:

  development:
    adapter: mysql2

, а не

  development:
    adapter: mysql

драгоценный камень построен, но я получил ошибку, когда я в следующий раз побежал грабли.

очевидно, как только вы увидели его, но вы получите то же сообщение об ошибке, как обсуждалось здесь!

кстати, команда для сборки mysql2 gem На моя машина была немного сложнее, чем описано выше:

gem install mysql2 -- --with-mysql-lib="c:\mysql-connector-c-noinstall-6.0.2-win32\lib"  --with-mysql-include="c:\mysql-connector-c-noinstall-6.0.2-win32\include" --with-mysql-dir="c:\mysql-connector-c-noinstall-6.0.2-win32"

добавить к существующему ответу. (в частности, платформа windows)

Руби действительно отстой на вершине этого. Rails не должен на самом деле заботиться о версии коннектора или версии mysql. -- но это мое мнение.

для того, чтобы получить этот **ь вещь работает, вам нужно 2 вещи. mysql2 gem и libmysql.dll и нужно сопоставить их с точки зрения версии. (это вызвало путаницу для меня, потому что я вижу последний разъем является 6.x в то время как mysql-только 5.x, как я должен сопоставить их)

mysql2 gem. а при его установке нужно указать коннектор.

     gem install mysql2 --platform=ruby -- 
     --with-mysql-lib="d:\mysql\lib" --with-mysql-include="d:\mysql\include"

это не должен быть соединитель, загруженный из oracle. все, что вам нужно, это установка mysql и libinclude папка под ним. тогда поставь libmysql.dll под .

если это не сработало, чтобы вы установили mysql2 gem успешно => для моего случая это потому, что мой mysql слишком стар (почему бы ruby заботиться об этом). поэтому я получаю некоторые последние mysql от oracle. используйте libincludelibmysql.dll под него. вам действительно не нужно обновлять свою базу данных, вы можете хранить ее где-то и продолжать использовать ее после того, как вы создали 2 необходимых компонента

мой случай: я использую очень древнюю базу данных mysql, и я не хочу ее обновлять в данный момент. поэтому я поддерживаю эту базу данных и восстановил его позже

в моем случае на windows, неправильно скопирован libmysql.dll из каталога MySQL Server 5.5 в ruby200 / bin. правильно-скопировать libmysql.dll от mysql-connector-c-noinstall-6.0.2-win32.

У меня была такая же проблема , и я решил следующее:

1 :: скачать zip по следующей ссылке:https://dev.mysql.com/downloads/connector/c/

2 :: распаковать файл ( libmysql.dll ) в " провайдер папка" проекта.

3 :: Volve один, чтобы запустить команду bundle install

и готово , решена !

https://dev.mysql.com/downloads/connector/c/