Sto appena iniziando con Ruby (e le guide). Ho fatto il setup in base alle http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems, usando rvm
. Ho tutto ciò che funziona bene con sqlite.
Ora mi piacerebbe provare a convertire le cose su MySQL, dal momento che è quello con cui faccio la maggior parte del mio sviluppo. Nel mio Gemfile ho sostituito sqlite con mysql2:
group :development, :test do # gem 'sqlite3', '1.3.5' gem 'mysql2' gem 'rspec-rails', '2.9.0' end
Ma quando provo a creare il DB per i binari in MySQL ottengo:
$ 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
Ho visto altri post che raccomandavano di reinstallare MySQL tramite homebrew (il mio è stato installato tramite un DMG scaricabile), ma preferirei non farlo poiché ho già molti altri database in esso contenuti per altri progetti non ruby.
In effetti ho il file che Rails sta cercando; è installato in /usr/local/mysql/lib/libmysqlclient.18.dylib
. Qual è il modo migliore per dire a Rails come individuarlo?
La soluzione è abbastanza semplice; Aggiungi il percorso della libreria nel tuo file ~ / .bash_profile o ~ / .profile:
MYSQL=/usr/local/mysql/bin export PATH=$PATH:$MYSQL export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
Se non funziona ancora (questo lavoro per me):
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Ci sono molti blog con install_name_tool
, che non funzioneranno per me perché sono su OSX Lion:
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
In El Capitan ho ottenuto ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
In El Capitan /usr/lib/
ora ha un flag limitato e non può essere scritto senza disabilitare la sicurezza, quindi ho semplicemente messo il link in /usr/local/lib
.
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Il server Rails sta funzionando di nuovo bene.
Mentre il titolo di questa domanda descrive con precisione il problema che ho incontrato, le circostanze sono diverse da quelle descritte nelle risposte precedenti, e così è stata la soluzione.
Nel mio caso (El Capitan, mysql installato tramite homebrew), un brew update && brew upgrade
un brew update && brew upgrade
sì che il pacchetto mysql venisse aggiornato a 5.7.10 (da 5.6.x).
L’aggiornamento ha causato la sostituzione di libmysqlclient.20.dylib
con libmysqlclient.20.dylib
, ma la gem mysql2
si basava ancora sul primo.
Per risolvere il problema ho fatto: gem uninstall mysql2 && gem install mysql2
Si noti che problemi simili possono verificarsi con diverse librerie gestite da homebrew ( vedere la mia risposta a questo, per esempio )
sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Questo ha funzionato per me. Ho installato MySQL da un file dmg.
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Ha funzionato per me Tutti quelli simili no.
Se stai utilizzando MySQL installato da HomeBrew in El Capitan, devi collegarlo come segue:
sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Mi sono imbattuto in questo problema dopo una rimozione completa e quindi una nuova installazione di MySQL. In particolare:
Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Non avevo nemmeno toccato la mia app Rails.
La reinstallazione della gem mysql2
risolto questo problema.
$ 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]
Per MySql 5.6 installato da DMG su Mavericks
sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Confermo che patch di Abhishek funziona.
funziona anche per Yosemite.
nota: invece di colbind a una particolare versione di mysql, usa il fatto che mysql ha già creato un link simbolico:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
questa soluzione funziona per Xcode e C API.
Per essere sicuri di quale symlink è necessario (dipende dalla versione di mysql e dalla versione os):
$ locate libmysqlclient.18.dylib /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib
e così :
ln -s /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Questo funziona per me:
ln -s /usr/local/Cellar/mysql/5.6.22/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Sto usando Rails REE (2.3.4) per un sistema legacy che abbiamo. Dopo l’aggiornamento a El Capitan, lo script di esecuzione / console ha fatto scattare un errore e la mia app non sarebbe più iniziata (usando 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)
Da questo stesso thread, sopra, ho determinato che dovevo emettere questo comando nel terminale:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Questo comando ha prodotto un errore: “ln: /usr/lib/libmysqlclient.18.dylib: Operazione non consentita”. Non ho mai visto questo errore prima.
Dopo un po ‘di ricerche, ho trovato questo articolo: http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html e ho seguito il istruzioni per distriggersre SIP (la nuova protezione di integrità del sistema di El Capitan). Dopo aver spento SIP, e dopo il riavvio, il comando ln ha funzionato correttamente. Quindi ho distriggersto SIP. Ora va tutto bene. La mia app viene eseguita di nuovo usando pow e nessun errore eseguendo script / console. Spero che questo ti aiuta.
Su Mac Sierra se si utilizza Homebrew, quindi eseguire:
sudo ln -s /usr/local/Cellar/[email protected]/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
gem uninstall -aIx
e
bundle install
ha funzionato per me
Per coloro che usano la birra. Collega semplicemente la versione di mysql con l’opzione “–force”.
brew link mysql56 --force
usa questo dalla tua riga di comando:
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
provato su pochi computer con Maverick funziona sempre
Se stai usando Bitnami RubyStack e hai riscontrato il problema simile. Prova questo
sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Il mio problema con il caricamento di quel file bundle era un brutto link simbolico. Quindi controlla il link e sostituiscilo con uno nuovo se necessario. Tutto è andato a posto in quel punto. Non so come sia successo, ma è successo. La prima volta che si è verificato un errore di syntax in questo modo.
Stavo lavorando con il comando rails g model e ho ricevuto questo errore:
Library not loaded: libmysqlclient.18.dylib
Ho provato questo e ha funzionato per me. Stavo usando Mavericks 10.9.5
sudo ln -s /usr/local/mysql-5.6.19-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Grazie!
Ora sto usando Yosemite 10.10.5 e ho ottenuto lo stesso errore, quindi ho appena eseguito questo comando sul terminale e il problema è stato corretto.
$ sudo ln -s /usr/local/mysql-5.6.26-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
puoi anche provare:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Entrambi funzionano bene per me. Spero possa essere utile!
Ho ricevuto questo problema “Libreria non caricata: libmysqlclient.18.dylib” durante l’importazione di MySQLdb da MySQL Per python3 :
Traceback (most recent call last): File "test.py", line 3, in 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 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
La soluzione funziona per me: 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
L’unica cosa che ha funzionato per me è:
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
Sostituisci i percorsi di mysql e gemme per adattarli al tuo sistema.
Dopo molte ricerche su google e tutto quanto sopra … l’unica cosa che ha risolto il mio problema è stato questo comando:
$install_name_tool -id /usr/local/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Sto usando un MacBook Pro, OSX 10 El Capitan. Darwin xxxx-MacBook-Pro.local 15.6.0 Darwin Kernel Versione 15.6.0: Gio 23 Giu 18:25:34 PDT 2016; XXX: xnu-3248.60.10 ~ 1 / RELEASE_X86_64 x86_64 Perl: v5.18.2 Mysql: 5.6.19