wake-up-neo.com

schienen + MySQL unter OSX: Bibliothek nicht geladen: libmysqlclient.18.dylib

Ich fange gerade mit Ruby (und Rails) an. Ich habe das Setup gemäß http://Ruby.railstutorial.org/Ruby-on-Rails-tutorial-book#sec:Ruby gems mit rvm durchgeführt. Ich habe alles gut mit sqlite. 

Jetzt möchte ich versuchen, Dinge auf MySQL umzustellen, da ich damit die meiste Entwicklung mache. In meiner Gemfile habe ich sqlite durch mysql2 ersetzt:

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

Aber wenn ich versuche, die DB für Rails in MySQL zu erstellen, bekomme ich:

$ rake db:create --trace
rake aborted!
dlopen(/Users/username/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/username/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/username/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle

Ich habe andere Postings gesehen, in denen empfohlen wurde, MySQL über Homebrew neu zu installieren (meiner wurde über eine herunterladbare DMG installiert), aber ich würde das lieber nicht tun, da ich bereits mehrere andere Datenbanken für andere Nicht-Ruby-Projekte habe.

Ich habe tatsächlich die Datei, nach der Rails sucht. es ist in /usr/local/mysql/lib/libmysqlclient.18.dylib installiert. Wie kann man Rails am besten sagen, wie man es findet?

111
George Armhold

Die Lösung ist ziemlich einfach; Fügen Sie den Bibliothekspfad in Ihre Datei ~/.bash_profile oder ~/.profile ein:

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

Wenn es immer noch nicht funktioniert (diese Arbeit für mich):

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

Es gibt viele Blogs mit install_name_tool, die für mich nicht funktionieren, da ich unter OSX Lion bin:

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
300
atejeda

In El Capitan bekam ich ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted 

In El Capitan hat /usr/lib/ jetzt ein eingeschränktes Flag und kann nicht ohne Deaktivierung der Sicherheit beschrieben werden. Deshalb setze ich den Link einfach in /usr/local/lib.

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

Der Rails-Server läuft wieder einwandfrei.

121
TinMonkey

Während der Titel dieser Frage genau das Problem beschreibt, auf das ich gestoßen bin, unterscheiden sich die Umstände von den in den vorherigen Antworten beschriebenen und auch die Lösung.

In meinem Fall (El Capitan, mysql über Homebrew installiert) wurde durch ein brew update && brew upgrade das mysql-Paket auf 5.7.10 (von 5.6.x) aktualisiert.

Das Upgrade führte dazu, dass libmysqlclient.18.dylib durch libmysqlclient.20.dylib ersetzt wurde, aber der mysql2-gem war immer noch auf den ersteren angewiesen.

Um das Problem zu beheben, habe ich Folgendes getan: gem uninstall mysql2 && gem install mysql2

Bitte beachten Sie, dass ähnliche Probleme bei verschiedenen von Homebrew verwalteten Bibliotheken auftreten können ( siehe meine eigene Antwort zum Beispiel )

42
Giuseppe
Sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Das hat bei mir funktioniert. Ich habe MySQL aus einer DMG-Datei installiert.

25
Joseph
Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Arbeitete für mich. All die ähnlichen nicht.

16
Greg Benner

Nach einer vollständigen Entfernung und einer Neuinstallation von MySQL bin ich auf dieses Problem gestoßen. Speziell:

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

Ich hatte meine Rails-App nicht einmal angerührt.

Das erneute Installieren des mysql2 gems hat dieses Problem behoben.

$ 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
sealocal

Wenn Sie MySQL verwenden, das von HomeBrew in El Capitan installiert wurde, sollten Sie es folgendermaßen verknüpfen:

Sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
9
arjunswaj

Für MySql 5.6 wird von DMG auf Mavericks installiert

Sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
6
Abhishek Pande

Ich bestätige den Patch von Abhishek funktioniert Arbeit.

es funktioniert auch für Yosemite.

anmerkung: Verwenden Sie statt einer Verknüpfung zu einer bestimmten Version von MySQL die Tatsache, dass MySQL bereits erstelltes Symlink ist:

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

diese Lösung funktioniert für Xcode und C-API.

4
ingconti

Für diejenigen, die brauen verwenden. Verknüpfen Sie Ihre MySQL-Version einfach mit der Option "--force". 

brew link mysql56 --force
2
tagaism

Das funktioniert für mich:

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

Um sicher zu sein, welcher Symlink benötigt wird (abhängig von MySQL-Version und OS-Version):

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

und so :

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

Ich verwende Rails REE (2.3.4) für ein Altsystem, das wir haben. Nach dem Upgrade auf El Capitan wurde beim Ausführen des Skripts/der Konsole ein Fehler generiert, und meine App konnte nicht mehr gestartet werden (mit pow):

$ 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)


Aus diesem Thread oben habe ich festgestellt, dass ich diesen Befehl in terminal ausgeben muss:
Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Dieser Befehl hat einen Fehler erzeugt: "ln: /usr/lib/libmysqlclient.18.dylib: Operation nicht zulässig". Ich habe diesen Fehler noch nie gesehen.

Nach einigem Graben fand ich diesen Artikel: http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html und befolgte die Anweisungen, um SIP (den neuen Systemintegritätsschutz von El Capitan) auszuschalten. Nach dem Ausschalten von SIP und dem Neustart funktionierte der ln-Befehl einwandfrei. Dann habe ich SIP ausgeschaltet. Jetzt ist alles gut. Meine App wird erneut mit pow und ohne Fehler beim Ausführen von Skript/Konsole ausgeführt. Ich hoffe das hilft dir.

1
GeezerGeek
gem uninstall -aIx

und

bundle install

arbeitete für mich.

1
atomiccoder

Wenn Sie Homebrew auf Mac Sierra verwenden, machen Sie Folgendes:

Sudo ln -s /usr/local/Cellar/[email protected]/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
1
Abhishek

Ich habe dieses Problem erhalten "Bibliothek nicht geladen: libmysqlclient.18.dylib" beim Importieren von MySQLdb aus MySQL For python3

    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

Die Lösung funktioniert für mich: 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
0
Binh Dang

Nach vielem googeln und probieren Sie alles oben ... Das einzige, was mein Problem gelöst hat, war dieser Befehl:

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

Ich verwende ein Macbook Pro, OSX 10 El Capitan . Darwin xxxx-MacBook-Pro.local 15.6.0 Darwin Kernel Version 15.6.0: Do Jun 23 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
Redcloud

verwenden Sie dies von Ihrer Befehlszeile aus:

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

versuchte auf wenigen Computern mit Maverick immer funktioniert

0
toxic

Mein Problem beim Laden dieser Bundle-Datei war ein fehlerhafter Symlink. Überprüfen Sie den Link und ersetzen Sie ihn bei Bedarf durch einen neuen. Zu diesem Zeitpunkt passte alles zusammen. Nicht sicher, wie das passiert ist, aber es tat es. Zum ersten Mal trat ein Syntaxfehler auf. 

0
Rich_F

Das einzige, was für mich funktioniert hat:

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

Ersetzen Sie die Pfade von MySQL und Edelsteinen, um sie an Ihr System anzupassen.

0

Wenn Sie Bitnami RubyStack verwenden und auf ein ähnliches Problem gestoßen sind. Probier diese

Sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
0
noelvictorino

Ich habe mit dem Befehl Rails g gearbeitet und diese Fehlermeldung erhalten:

Library not loaded: libmysqlclient.18.dylib

Ich habe es ausprobiert und es funktionierte für mich. Ich habe Mavericks 10.9.5 verwendet

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

Vielen Dank!

Jetzt verwende ich Yosemite 10.10.5 und ich habe den gleichen Fehler erhalten, also habe ich diesen Befehl auf dem Terminal ausgeführt und es wurde erfolgreich behoben.

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

sie können auch versuchen:

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

Beide funktionieren gut für mich ... Ich hoffe es könnte nützlich sein!

0
Alex Ventura