Kütüphane yüklenmedi: mysql2 gem ile OS X 10.6'da 'raylar sunucusu' çalıştırılmaya çalışılırken libmysqlclient.16.dylib hatası


206

Bir süredir bununla mücadele ediyorum.

Snow Leopard makineme Rails 3, gem, mysql kurdum. İlk projemi oluşturup koşmaya çalışana kadar her şey yolunda gidiyordu

rails server

Bunu çalıştırdıktan sonra:

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$ 

Bildiğim kadarıyla sorun mysql2 gem ile olduğunu. MySQL iyi çalışıyor gibi görünüyor ve benim Gemfile referans mysql2, benim database.yml dosyası da iyi görünüyor.

Hatadan bahsediliyor

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

Ve henüz

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 orada !?

Eski mysql mücevher kullanırsanız, WEBrick iyi çizmeler. Ama bu ideal değil, değil mi?

Google'ın bana verebileceği her şeyi denedim! Herhangi bir yardım çok takdir etmek.

Yanıtlar:


393

Bu cevapların hiçbirini benim için kullanamadım, ama bu benim için çalışmasını sağlayan komut buydu. Bu şekilde mysql'nizi her güncellediğinizde install_name_tool kullanmanıza gerek kalmaz

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

11
Bu sorunu çözmenin en basit ve doğru yolu budur.
Voldy

2
Bunun için teşekkürler. yukarıdaki işaretli yanıt yalnızca bir site için çalıştı, ancak bu kalıcı olarak çalıştı. Bu çok daha iyi.
fregas

12
Neler olup bittiğini merak edenler için, bu komut ikinci yerden birinciye sembolik bir bağlantı kurar. Mücevher altında MySQL istemci kütüphanesini aradığında /usr/lib, bu bağlantı gerçekte kurulu olduğu konuma çözümlenecektir. OS X'te, genellikle /usr/local/mysql/libbu komutun bağlandığı yerdir. Lib'iniz farklı bir konuma kurulmuşsa, bu komutu değiştirmeniz gerekir. Son locate libmysqlclient.18.dylibbağımsız değişken için sonucu yazın ve değiştirin -s.
Siobhán

1
@Sean D., ben libmysqlclient.18.dylib bulun çalıştırdığımda bu çıktıyı almak WARNING: The locate database (/var/db/locate.database) does not exist. To create the database, run the following command: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist Please be aware that the database can take some time to generate; once the database has been created, this message will no longer appear.yanlış nedir?
GiH

1
@GiH Size söylediği komutu çalıştırmanız yeterlidir ( sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist). Bu, sabit sürücünüzü endeksleme işlemini başlatacak ve bu da locatekomutun gelecekte çalışmasını sağlayacaktır . Yine de çoğu durumda, bunu yapmanız gerekmeyeceğini düşünüyorum ve sadece luvlss olduğu gibi sağlanan komutu kullanabilirsiniz.
Siobhán

93

Bunu sonunda çözdüm!

Ruby ve Rails'i RVM altında yeniden kurdum. Ruby 1.9.2-p136 sürümünü kullanıyorum.

RVm altında yeniden yüklendikten sonra bu hata hala mevcuttu.

Sonunda çözen sihirli komut şuydu:

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

Umarım bu başka birine yardımcı olur!


1
Bu bir şekilde mysql'ın ayrıcalıklarını sıfırladı ve şimdi giriş yapamıyorum ... mysql belgelerinde açıklandığı gibi bir dosya kullanarak şifre sıfırlama gerçekleştirdikten sonra bile.
Coderama

2
Teşekkürler, bu benim için yaptı. Ve aynı sorunu olan diğerleri için, rvm kullanıyorsanız sudo'yu atlayın, aksi takdirde izinler muhtemelen değişecektir.
DanneManne

2
Sihirli komut, RVM kullanmasanız bile çalışır - sadece son argümanı mysql2-0.2.6/lib/mysql2/mysql2.bundlemücevherlerinizin yüklü olduğu yere işaret edecek şekilde değiştirin .
Tobias Cohen

2
Çok teşekkür ederim. Bunu nasıl anladın?
Derek

7
Teşekkür ederim! Ruby 1.9.2-p180, mysql2 gem 0.3.10 ile RVM 1.6.4 çalışan Mac OS X Lion için biraz farklı bir komuta ihtiyacım vardı: sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.10/lib/mysql2/mysql2.bundle
Randy Eppinger 26:11


40

Benim için bu sadece mysql yükseltmişti ama mysql2 gem güncellememişti çünkü - gem yeniden yükleme düzeltmek olacaktır.

gem pristine mysql2


Bu seçilen cevap olmalıdır.
El Guapo

26

Bende aynı sorun var. Görünüşe göre libmysqlclient kütüphanesini bulamıyor. Benim için çalışan geçici bir düzeltme şudur:

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

Yapılandırma yükleme yolunu veya ne ayarlandığını belirlediğimden emin değilim ama benim mysql kurulumumda görünmedi. Daha kalıcı bir çözüm bulursam tekrar gönderirim.

Düzenleme: Aslında bu düzeltme sorunu daha doğru bir şekilde ele almaktadır.


24

Aşağıdakileri kendinize ekleyin ~/.bash_profile:

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

Bu benim için çalıştı


Evet, 1.9.3-p448 üzerinde çalışıyor. Yazık ki kabul edilmiş bir cevap değil.
andreimarinescu

17

Bunu yaptığınızda OSX El Capitan güncellemesinde:

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

gibi bir hata atıyor

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

Bundan kaçınmak için ilk önce libmysqlclient.18.dylibkomutu kullanarak

User$ locate libmysqlclient.18.dylib

Benim durumumda geri döndü /usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib

Yani bunun yerine bunun usr/lib/için sembolik bağlantı oluşturacağız usr/local/lib/:

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

Daha fazla detay: https://forums.developer.apple.com/thread/7935


1
El Capitan'da benim için tüm gereken son sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Justin

Birine yardım ettiğine sevindim. : D
Sony Mathew

Bu, elcapitan için doğru cevabınızdır, hedef bağlantınız /usr/local/libklasörde olmalıdır
Arnold Roa

13

Aşağıdaki satırlar benim için çalışıyor. Mac 10.7.2 kullanıyorum.

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


1
Bu benim sorunumu düzeltti. Teşekkürler!
Justin Bozonier

11

Sadece bu problemle karşılaştı. Tek yapmam gereken mysql2 gem'i kaldırıp yeniden kurmak. Umarım bu diğer insanlar için işe yarar


1
Makinemde, Mavericks çalıştırarak, mysql2 geminin tüm sürümünü gem kaldırma mysql2 ve istemde yanıtla kaldırdım All versions. Daha sonra demlemek yükseltme mysql koştu ve sonra mücevher yüklemek mysql2.
Martin Streicher

4

Benim için böyle çalıştı:

Aşağıdaki komutu
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

Ortamlarım:
$ rails -v Rails 3.0.6

$ mysql -
sürüm mysql Ver 14.14 5.5x10, osx10.6 (i386) için readline 5.1 kullanarak dağıtın

$ yakut-v
yakut 1.9.2p180 (2011-02-18 revizyon 30909) [x86_64-darwin10.7.0]

Umarım bu birine yardımcı olur.


3

Teşekkürler, Ogapo! Bu takma adı dışa aktarma benim için çalıştı ve sonra bağlantıyı takip ettim ve benim durumumda mysql2.bundle /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle içinde ~ / .Rvm yerine bir paket değiştirmek için install_name_tool ayarladım ve bu şekilde yapılması gereken bir çalışma var.

Peki şimdi:

   $ otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
    /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
        /usr/local/mysql/lib/libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

3

merhaba benim için Fredy Andersen önerilen bağlantıdan çalıştı

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

Sadece benim mysql sürümü değiştirmek zorunda kaldı, komutta, teşekkürler


3

Mevcut projem için değerli taşımı silerek ve yeniden yaratarak ve paket yüklemesini yeniden çalıştırarak bu sorunu çözdüm. Ben mysql yeni bir sürümünü yükleyerek neden düşünüyorum.


3

Django üzerinde çalışırken, kullandığım bu sorunu vardı brewbenim Açık Kaynak programlarının bir sürü yüklemek ve kullandığım beri aşağıdakileri yapmak için gerekli brewyüklemek için mysql:

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

Kitaplık sürümünüzle değiştirdiğinizden emin olun!


3

bundle install mysql --forcebana yardımcı oldu. Ürünün bir sonucu olarak gittiği bağımlılıkları yeniden yükledi brew uninstall mysql.


Unknown switches '--force'
Arnold Roa

2

Jonty, ben de bununla mücadele ediyorum.

Bence burada bir ipucu var:

otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
    libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

Dylib'in yolunun oldukça kısa olduğuna dikkat edin.

Gem yükleme talimatlarının dylib yolundan ayrıldığını anlamaya çalışıyorum, ama asla kendimi bir mücevher inşa etmediğim için yavaş gidiyor.

Daha fazla bulursam daha fazla yayınlayacağım!


2

Aynı problemi birkaç gün önce yaşadım. Sonunda çözmeyi başardım. Nasıl yapılacağından pek emin değilim, ama yine de ne yaptığımı anlatacağım. Belki sana yardım eder.

RVM'yi indirerek başladım. Henüz kullanmıyorsanız, kesinlikle tavsiye ederim. Temel olarak, Ruby, RoR ve RubyGems'in yeni ayrı kurulumu için bir sanal alan oluşturur. Aslında, aynı anda birden fazla yüklemeye sahip olabilir ve anında birbirine geçebilirsiniz. Mucizevi şekilde çalışır.

Bu neden faydalı? Çünkü OS X'teki varsayılan Ruby kurulumuyla uğraşmamalısınız. Sistem buna bağlıdır. Varsayılan Ruby ve RoR kurulumunu yalnız bırakmak ve RVM kullanarak kendi gelişiminiz için kullanabileceğiniz yeni bir tane oluşturmak en iyisidir.

Ayrı Ruby kurulumumu oluşturduktan sonra, RoR, RubyGems ve mysql'yi yeni kurdum ve işe yaradı. Attığım tam adımlar için soruma bakın: Rayların Kurulumu, MySQL, vb. Her şey ters gidiyor

Tekrar: Bunun sorununuzu çözeceğinden emin değilim. Ama kesinlikle benim için hile yaptı ve her durumda RVM kullanmak son derece tavsiye edilir.


2

Yine de yukarıdaki çözümlerle (örneğin) TextMate için Rails eklentisi ile çalışmadığını gördüm. Benzer bir hata aldım (veritabanı şemasını alırken).

Öyleyse açık terminal:

cd /usr/local/lib
sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib .

Değiştir mysql-5.5.8-osx10.6-x86_64 kendi yolunda (veya mysql) ile.

Bu, lib'e bir sembol bağlantısı yapar, şimdi raylar komut satırından çalışır ve ayrıca ruby-on-rails-tmbundle gibi TextMate eklentileri .

Açık olmak gerekirse: bu, raylar sunucusunu başlatırken aldığınız hatayı da düzeltir.


2

Bu genellikle mysql'i yükselttiğinizde olur. Eski mysql libs üzerine kurulmuş olan mysql2 gem yeni libs ile çalışamaz. Sadece yeniden yüklemeniz gerekiyor.

Mysql2 ile kaldırın gem uninstall mysql2. Sonra ile yükleyingem install mysql2


1

Proje klasörü kaplama .rvmrc dosyası oluşturarak çözdüm:

rvm use <yourrubie>

sonra proje yoluma giriyorum

cd ~/myprojectpath

sonra koşarım

bundle install

1

Benim luvlss komutunun sürümü:

Mac OSX 10.10.5

MySQL 5.6.27

Yolcu 5.0.21

sudo ln -s /usr/local/mysql-5.6.27-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Benim yaptığım gibi birçok farklı bağlantıyı deniyorsanız, aşağıdakileri yapın:

sudo unlink /usr/lib/libmysqlclient.18.dylib


1

Bir Terminal açın ve aşağıdakileri çalıştırın:

export PATH=$PATH:/usr/local/mysql/bin

İşe yaramalı.


1
Bu işi yaptı, teşekkür ederim !!! Visual Studio Code üzerinde Django çalıştırmakta sorun yaşadım. Virtualenv üzerinde mysqlclient yüklüyse hata alıp tutar.
Irshu

0

OSX kullanıyorsanız ve demlemek kullanarak mysql yüklüyorsanız, şunları yapabilirsiniz:

brew link mysql

Sürümle ilgili sorun yaşıyorsanız (mücevherim 5.6.25 gerekliyken çalışan mysql 5.7 vardı),

brew unlink mysql
brew switch mysql 5.6.25

0

Benim için mysql'i manuel olarak kaldırmak zorunda kaldım

brew uninstall mysql
rm -rf /usr/local/var/mysql
brew install mysql
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.