Библиотека не загружена: ошибка libmysqlclient.16.dylib при попытке запустить 'rails server' на OS X 10.6 с помощью mysql2 gem - PullRequest
206 голосов
/ 28 декабря 2010

Я уже некоторое время борюсь с этим.

Я установил Rails 3, gem, mysql на свой компьютер Snow Leopard. Все шло хорошо, пока я не создал свой первый проект и не попытался запустить

rails server

После запуска я получаю:

jontybrook$ rails server
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
  Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
    from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require'
    from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27
    from script/rails:6:in `require'
    from script/rails:6
jontybrook$ 

Насколько я могу судить, проблема в самоцвете mysql2. MySQL, кажется, работает нормально, и мой Gemfile ссылается на mysql2, мой файл database.yml также выглядит нормально.

Ошибка упоминает

Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

И еще

jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2
jontybrook$ ls
client.rb   em.rb       error.rb      mysql2.bundle result.rb

MySQL2.bundle есть!?

Если я использую старый самоцвет mysql, WEBrick загружается нормально. Но это не идеально, правда?

Я перепробовал все, что может дать мне Google! Любая помощь высоко ценится.

Ответы [ 24 ]

392 голосов
/ 23 мая 2011

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

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
93 голосов
/ 30 декабря 2010

Я решил это, в конце концов!

Я переустановил Ruby и Rails под RVM.Я использую Ruby версии 1.9.2-p136.

После переустановки под rvm эта ошибка все еще присутствовала.

В конце концов волшебная команда, которая ее решила, была:

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

Надеюсь, это поможет кому-то еще!

88 голосов
/ 16 февраля 2011

Это исправление работает очень хорошо для меня:

Добавьте следующее в ваш ~ / .profile

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/

39 голосов
/ 10 ноября 2013

Для меня это было только потому, что я обновил mysql, но не обновил драгоценный камень mysql2 - переустановка драгоценного камня исправит это ...

gem pristine mysql2

26 голосов
/ 29 декабря 2010

У меня та же проблема. Похоже, он не может найти библиотеку libmysqlclient. Временное исправление, которое сработало для меня, следующее:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

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

Edit: На самом деле это исправление, по-видимому, более точно решает проблему.

24 голосов
/ 29 ноября 2011

Добавьте ниже к вашему ~/.bash_profile:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

Это сработало для меня

17 голосов
/ 30 октября 2015

В обновлении OSX El Capitan, когда вы делаете это:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

выдает ошибку типа

ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

Итак, чтобы избежать этого, сначала нужно найти libmysqlclient.18.dylib с помощью команды

User$ locate libmysqlclient.18.dylib

В моем случае вернулось /usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib

Таким образом, вместо usr/lib/ мы создадим символическую ссылку на usr/local/lib/ следующим образом:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

Подробнее: https://forums.developer.apple.com/thread/7935

13 голосов
/ 07 января 2013

следующие строки работают для меня. Я использую Mac 10.7.2.

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

10 голосов
/ 23 апреля 2012

Просто столкнулся с этой проблемой. Все, что мне нужно было сделать - это удалить mysql2 gem и переустановить его. Надеюсь, что это работает для других людей

4 голосов
/ 12 апреля 2011

Вот как у меня это работало:

Я выполнил следующую команду
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib ~ / .rvm / gems / ruby-1.9.2-p180 / gems / mysql2-0.2.7 / lib / mysql2 / mysql2.bundle

Мое окружение:
$ rails -v Рельсы 3.0.6

$ mysql --version
mysql Ver 14.14 Distrib 5.5.11, для osx10.6 (i386) с использованием readline 5.1

$ ruby ​​-v
ruby 1.9.2p180 (2011-02-18 редакция 30909) [x86_64-darwin10.7.0]

Надеюсь, это кому-нибудь поможет.

...