OSX üzerinde rails + MySQL: Kitaplık yüklenmedi: libmysqlclient.18.dylib


119

Ruby (ve raylar) ile yeni başlıyorum. Kurulumu http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems'e göre yaptım rvm. Sqlite ile her şey yolunda gidiyor.

Şimdi bir şeyleri MySQL'e dönüştürmeyi denemek istiyorum, çünkü geliştirmemin çoğunu bununla yapıyorum. Gemfile dosyamda sqlite'ı mysql2 ile değiştirdim:

group :development, :test do
#  gem 'sqlite3', '1.3.5'
  gem 'mysql2'
  gem 'rspec-rails', '2.9.0'
end

Ancak MySQL'de raylar için DB oluşturmaya çalıştığımda şunu elde ediyorum:

$ rake db:create --trace
rake aborted!
dlopen(/Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle

MySQL'i homebrew aracılığıyla yeniden yüklemeyi öneren başka gönderiler gördüm (benimki indirilebilir bir DMG aracılığıyla kuruldu), ancak diğer yakut olmayan projeler için zaten orada birkaç başka veritabanım olduğu için bunu yapmamayı tercih ederim.

Aslında Rails'in aradığı dosya bende var; içinde yüklü /usr/local/mysql/lib/libmysqlclient.18.dylib. Rails'e onu nasıl bulacağını söylemenin en iyi yolu nedir?


Bu, bunun bir kopyası olabilir mi? stackoverflow.com/questions/4546698/…
gmile

Aslında. Kendi sorumu silemiyorum? Çift olarak kapatmak için oy verildi.
George Armhold

Yanıtlar:


313

Çözüm oldukça kolaydır; Kitaplık yolunu ~ / .bash_profile veya ~ / .profile dosyanıza ekleyin:

MYSQL=/usr/local/mysql/bin
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

Hala çalışmıyorsa (bu benim için çalışıyor):

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

install_name_toolOSX Lion'da olduğum için benim için çalışmayacak birçok blog var :

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/indexer
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/search

16
Sembolik bağlantı benim için çalıştı (Mountain Lion'a yükselttikten sonra). Teşekkürler!
siannopollo

5
Symlink, özellikle RubyMine altından rayları çalıştırmak gibi .bash_profile, gerçekten geçerli olmayan durumlarda yapar.
maksimov

2
DYLD_LIBRARY_PATH dosyanızı .bash_profile dosyasına ekledim, ancak 'mysql2' gemini kaldırıp yeniden yüklemem de gerekiyordu. like: 'gem uninstall mysql2 && gem install mysql2'
brendan

73
10.11 için buraya gelenler için usr/libartık sembolik bağlantı kuramazsınız, ancak bir sembolik bağlantı usr/local/libişe yarayacak:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
JonathanSimmons

2
@JonathanSimmons - Beni saçımın geri kalanını çekmekten kurtardın. Orijinal sembolik bağlantı yanıtı OS X 10.11.5'te çalışmaz, yalnızca "ln: /usr/lib/libmysqlclient.18.dylib: İşleme izin verilmiyor" hatasıyla karşılaşırsınız - Her şey şu anda çalışıyor ve sonunda gün için çalış ... Teşekkürler!
Colin Adams

125

El Capitan'da aldım ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

El Capitan'da /usr/lib/artık kısıtlanmış bir bayrak var ve güvenliği devre dışı bırakmadan yazılamıyor, bu yüzden /usr/local/libbunun yerine bağlantıyı koyuyorum .

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

Rails sunucusu tekrar düzgün çalışıyor.


2
Alex'in tüm cevabına ihtiyacım yoktu. Bir sembolik bağlantı hile yaptı.
gitb

Bunu yaptım ve şunu aldım: "connect ':' /tmp/mysql.sock '(2) (Mysql2 :: Error) soketi aracılığıyla yerel MySQL sunucusuna bağlanılamıyor"
Josh Hunter

1
@JoshHunter Bunun ayrı bir konu olduğuna inanıyorum. Burada stackoverflow.com/questions/18449050/… bir iş parçacığı vardır, ayrıca MySQL sunucusu çalışmıyor olabilir.
TinMonkey

evet, sunucu çalışmıyordu ... bu sorunu çözdü. sudo /usr/local/mysql/support-files/mysql.server start
Josh Hunter

62

Bu sorunun başlığı, karşılaştığım sorunu tam olarak tanımlasa da, koşullar önceki cevaplarda anlatılanlardan farklıdır ve çözüm de öyle.

Benim durumumda (El Capitan, homebrew aracılığıyla kurulan mysql), brew update && brew upgrademysql paketinin 5.7.10'a (5.6.x'ten) yükseltilmesine neden oldu.

Yükseltme , libmysqlclient.18.dylibdeğiştirilmesine neden oldu libmysqlclient.20.dylib, ancak mysql2mücevher hala eskisine güveniyordu.

Yaptığım sorunu çözmek için: gem uninstall mysql2 && gem install mysql2

Lütfen homebrew tarafından yönetilen farklı kitaplıklarda benzer sorunların ortaya çıkabileceğini unutmayın ( örneğin, buna kendi cevabıma bakın )


Harika ! Mysql'imi 5.7'ye yükselttim ... bu sorunla karşılaştım ..... Aşağıdaki adımları uyguladım 1. gem uninstall mysql2> seçili seçenek 3 2. gem install mysql2 3. bunu projenin gemfile dosyasına eklendi ---> gem 'mysql2' , '~> 0.3.21' 4. paket yükleme
Udit Kapahi

10
Herkese önce bunu denemesini tavsiye ederim! Çalışırsa, diğer geçici çözümlerden herhangi biriyle sisteminizi gereksiz yere kullanmaktan kaçınabilirsiniz. Bazen sihirli sembolik bağlara, vb. Güvenmeniz gerekir, ancak bu, sisteminizi giderek daha kırılgan hale getirir. (İşe yaramazsa, hiçbir zarar verilmez ve geri
Tom Wilson

Benim için de çalıştı. Sorun, homebrew w / mysql kurulumundan resmi yükleyiciye geçmemdi.
xenetics

1
Buraya gelen herhangi bir python kullanıcısı için pip uninstall mysqlclientve pip install mysqlclientayrıca çalıştı.
Peter Dolan

26
sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Bu benim için çalıştı. MySQL'i bir dmg dosyasından kurdum.


Bu, dmg dosyasından yüklenmiş MySQL ile benim için Mac OS X - Yosemite üzerinde çalıştı. Teşekkürler Joseph.
racl101

4
İşleme izin verilmiyor (belli ki sudo ile) SO
sürümüm

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

Benim için çalıştı. Tüm benzerleri yapmadı.


RubyMine için çözüm budur.
Justin

13

MySQL'in tamamen kaldırılmasından ve ardından yeni kurulumundan sonra bu problemle karşılaştım. özellikle:

Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib

Rails uygulamama bile dokunmadım.

Gem'i yeniden mysql2yüklemek bu sorunu çözdü.

$ gem uninstall mysql2
$ gem install mysql2 -v 0.3.18 # (specifying the version found in my Gemfile.lock)

[MySQL 5.7.10, Rails 4.0.0, Ruby 2.0.0, Mac OS X Yosemite 10.10]


9

El Capitan'da HomeBrew'den yüklenmiş MySQL kullanıyorsanız, aşağıdaki gibi bağlamanız gerekir:

sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

6

Mavericks'te DMG'den kurulan MySql 5.6 için

sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

4

Abhishek'ın yamasının işe yaradığını onaylıyorum .

Yosemite için de çalışıyor.

not: mysql'nin belirli bir sürümüne bağlanmak yerine, mysql'in zaten oluşturulmuş bir sembolik bağ olduğu gerçeğini kullanın:

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

bu çözüm Xcode ve C API için çalışıyor.


3

Demlemek kullananlar için. Sadece mysql sürümünüzü "--force" seçeneğiyle bağlayın.

brew link mysql56 --force

Bu, ln -s seçeneğini kullanmak yerine ... kitaplık dosyasını bağlamanın yoludur. Güncellenmiş sürüm için demleme bağlantısını kullanın mysql@5.7 --force
Vahid Kowsari

Teşekkürler. Ben yaptım brew link mysql@5.7 --force. Mükemmel çalıştı.
Aye Mon Chit

2

Hangi sembolik bağın gerekli olduğundan emin olmak için (mysql sürümüne ve işletim sistemi sürümüne bağlıdır):

$ locate libmysqlclient.18.dylib
/usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib

ve bu yüzden :

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

2

Bu benim için çalışıyor:

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

Benim için bir varyasyon haline geldi ...ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
ağaç kapıcı

1

Sahip olduğumuz eski bir sistem için Rails REE (2.3.4) kullanıyorum. El Capitan'a yükselttikten sonra, komut dosyası / konsol çalıştırıldığında bir hata oluştu ve uygulamam artık başlamıyor (pow kullanarak):

$ script/console
Loading development environment (Rails 2.3.4)
/blah-blah/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in establish_connection:RuntimeError: Please install the mysql2 adapter: gem install activerecord-mysql2-adapter (dlopen(/blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle
  Reason: image not found - /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle)


Yukarıdaki iş parçacığından, bu komutu terminalde vermem gerektiğini belirledim:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Bu komut bir hata üretti: "ln: /usr/lib/libmysqlclient.18.dylib: İşleme izin verilmiyor". Bu hatayı daha önce hiç görmemiştim.

Biraz araştırma yaptıktan sonra şu makaleyi buldum: http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html ve SIP'yi (El Capitan'ın yeni Sistem Bütünlüğü Koruması) kapatma talimatları. SIP'yi kapattıktan ve yeniden başlattıktan sonra, ln komutu iyi çalıştı. Sonra SIP'yi kapattım. Şimdi her şey yolunda. Uygulamam pow kullanarak tekrar çalışıyor ve komut dosyası / konsol çalıştırılırken hata oluşmuyor. Umarım bu sana yardımcı olur.


1

Mac Sierra'da Homebrew kullanıyorsanız şunları yapın:

sudo ln -s /usr/local/Cellar/mysql@5.6/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib


1

Bu benim için çalıştı. Tek yapmam gereken mysql2 gem'i kaldırmak ve aşağıdaki komutları kullanarak tekrar kurmak.

gem uninstall mysql2
gem install mysql2 -v '0.3.18' -- --with-mysql-config=/usr/local/Cellar/mysql@5.7/5.7.28/bin/mysql_config


0

bunu komut satırınızdan kullanın:

sudo install_name_tool -id /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib

her zaman işe yarayan birkaç bilgisayar üzerinde denendi


0

Bitnami RubyStack kullanıyorsanız ve benzer bir sorunla karşılaştıysanız. Bunu dene

sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

0

Bu paket dosyasının yüklenmesiyle ilgili sorunum kötü bir sembolik bağlantıydı. Bu yüzden bağlantıyı kontrol edin ve gerekirse yenisiyle değiştirin. O noktada her şey yerine oturdu. Nasıl olduğundan emin değilim, ama oldu. İlk kez böyle bir sözdizimi hatası oluştu.


0

Rails g model komutu ile çalışıyordum ve şu hatayı aldım:

Library not loaded: libmysqlclient.18.dylib

Bunu denedim ve benim için işe yaradı. Mavericks 10.9.5 kullanıyordum

sudo ln -s /usr/local/mysql-5.6.19-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Teşekkürler!

Şimdi Yosemite 10.10.5 kullanıyorum ve aynı hatayı aldım, bu yüzden bu komutu terminalde çalıştırdım ve başarıyla düzeltildi.

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

ayrıca deneyebilirsiniz:

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

İkisi de benim için iyi çalışıyor. Umarım faydalı olabilir!


0

MySQLdb'yi python3 için MySQL'den içe aktarırken "Kitaplık yüklenmedi: libmysqlclient.18.dylib" sorununu yaşadım :

    Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import MySQLdb
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so
  Reason: image not found

Çözüm benim için çalışıyor: Mac OS X 10.11.1 Python3.5

Edit ~/.bash_profile:
export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin:$PATH"
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
export PATH="/usr/local/mysql/bin:$PATH"
export PATH="/usr/local/mysql/lib:$PATH"
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

@MSU_Bulldog Tabii soruyu cevaplıyor. Hatta yeni bilgiler sağlar. Bir cevabın onları buraya getiren hatayı içermesi, onların da sağladıkları çözümün değersiz olduğu anlamına gelmez.
Artjom B.

0

Benim için işe yarayan tek şey şudur:

sudo install_name_tool -change libmysqlclient.18.dylib \
/usr/local/mysql-5.6.23-osx10.8-x86_64/lib/libmysqlclient.18.dylib \
/Library/Ruby/Gems/2.0.0/gems/mysql2-0.4.3/lib/mysql2/mysql2.bundle

Sisteminize uyması için mysql ve mücevherlerin yollarını değiştirin.


0

Bir sürü googling yaptıktan ve hepsini denedikten sonra ... sorunumu çözen tek şey şu komuttu:

$install_name_tool -id /usr/local/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

Bir macbook pro, OSX 10 El Capitan kullanıyorum. Darwin xxxx-MacBook-Pro.local 15.6.0 Darwin Kernel Sürüm 15.6.0: Per 23 Haz 18:25:34 PDT 2016; XXX: xnu-3248.60.10 ~ 1 / RELEASE_X86_64 x86_64 Perl: v5.18.2 Mysql: 5.6.19


0

Teşekkürler. Bir Homebrew yükseltmesi, Rails uygulamalarımın Mac'imde sorun yaşamasına neden oldu. MySQL (5.7) kaynağından yeniden yükledim, sonra bunu yapmak zorunda kaldım

sudo ln -s /usr/local/mysql-5.7.28-macos10.14-x86_64/lib/libmysqlclient.20.dylib /usr/lib/libmysqlclient.20bdylib

yukarıda okuduklarıma göre ve Gemfile dosyamda

gem 'mysql2', '0.5.3'

ve database.yml içinde

adapter: mysql2

0

Bu soruya zaten birçok cevap var, özellikle bu soru https://stackoverflow.com/a/10847618/5515861 . Sadece birkaç not eklemek istiyorum. Mac kullanıyorsanız, MySQL'i nasıl kurduğunuzu bilmiyorum, ancak araştırılması gereken ilk şey MySQL kurulumunuzun nerede olduğu. Benim için, MySQL brewfor version kullanılarak kurulur 5.7ve konumu da öyle /usr/local/opt/mysql@5.7/, bu yüzden aşağıdakileri my ~/.zshrc.

MYSQL=/usr/local/opt/mysql@5.7/bin/
MYSQL_LIB=/usr/local/opt/mysql@5.7/lib/
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=$MYSQL_LIB:$DYLD_LIBRARY_PATH

Umarım sorunlarınızı çözersiniz 😁

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.