rails + MySQL en OSX: biblioteca no cargada: libmysqlclient.18.dylib

Estoy comenzando con Ruby (y rails). Hice la configuración de acuerdo con http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems, usando rvm . Tengo todo funcionando bien con sqlite.

Ahora me gustaría tratar de convertir cosas a MySQL, ya que es con eso que hago la mayor parte de mi desarrollo. En mi Gemfile he reemplazado sqlite con mysql2:

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

Pero cuando trato de crear la base de datos para los Rails en MySQL obtengo:

 $ 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 

He visto otras publicaciones recomendando la reinstalación de MySQL a través de homebrew (la mía se instaló a través de un DMG descargable), pero preferiría no hacerlo porque ya tengo otras bases de datos para otros proyectos que no son ruby.

De hecho, tengo el archivo que Rails está buscando; está instalado en /usr/local/mysql/lib/libmysqlclient.18.dylib . ¿Cuál es la mejor manera de decirle a Rails cómo localizarlo?

La solución es bastante fácil; Agregue la ruta de la biblioteca en su archivo ~ / .bash_profile o ~ / .profile:

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

Si todavía no funciona (este trabajo para mí):

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

Hay muchos blogs con install_name_tool , que no me funcionarán porque estoy en 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 

En El Capitán obtuve ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

En El Capitan /usr/lib/ ahora tiene un indicador restringido y no se puede escribir sin desactivar la seguridad, así que simplemente coloco el enlace en /usr/local/lib lugar.

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

El servidor Rails está funcionando bien de nuevo.

Si bien el título de esta pregunta describe con precisión el problema que encontré, las circunstancias son diferentes de las descritas en las respuestas anteriores, y también la solución.

En mi caso (El Capitan, mysql instalado a través de homebrew), una brew update && brew upgrade provocó que el paquete mysql se actualizara a 5.7.10 (desde 5.6.x).

La actualización provocó que libmysqlclient.18.dylib se reemplazara por libmysqlclient.20.dylib , pero la gem mysql2 todavía confiaba en la primera.

Para solucionar el problema que hice: gem uninstall mysql2 && gem install mysql2

Tenga en cuenta que pueden ocurrir problemas similares con diferentes bibliotecas de homebrew-managed ( vea mi propia respuesta a esto, por ejemplo )

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

Eso funcionó para mí. Instalé MySQL desde un archivo dmg.

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

Trabajó para mi. Todos los similares no lo hicieron.

Si está utilizando MySQL instalado desde HomeBrew en El Capitan, entonces debe vincularlo de la siguiente manera:

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

Me encontré con este problema después de una eliminación completa y luego una nueva instalación de MySQL. Específicamente:

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

Ni siquiera había tocado mi aplicación Rails.

Reinstalar la gem mysql2 resolvió este 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]

Para MySql 5.6 instalado desde DMG en Mavericks

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

Confirmo que el parche de Abhishek funciona.

funciona para Yosemite, también.

nota: en lugar de vincular a una versión particular de mysql, use el hecho de que mysql ya construyó el enlace simbólico:

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

esta solución funciona para Xcode y C API.

Para estar seguro de qué enlace simbólico es necesario (depende de la versión de mysql y de la versión del sistema operativo):

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

y entonces :

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

Esto funciona para mí:

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

Estoy usando Rails REE (2.3.4) para un sistema heredado que tenemos. Después de actualizar a El Capitán, la ejecución del script / consola generó un error y mi aplicación ya no se iniciará (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) 

De este mismo hilo, arriba, determiné que necesitaba emitir este comando en la terminal:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Este comando produjo un error: “ln: /usr/lib/libmysqlclient.18.dylib: operación no permitida”. Nunca he visto ese error antes.

Después de investigar un poco, encontré este artículo: http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html y seguí el instrucciones para desactivar SIP (nueva protección de integridad del sistema de El Capitan). Después de desactivar SIP y después de reiniciar, el comando ln funcionó bien. Luego apagué el SIP. Ahora todo está bien. Mi aplicación se ejecuta nuevamente usando pow y no hay error al ejecutar el script / consola. Espero que esto te ayude.

En Mac Sierra si usa Homebrew, haga:

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

y

 bundle install 

trabajó para mi.

Para aquellos que usan brew. Solo enlace su versión de mysql con la opción “–force”.

 brew link mysql56 --force 

utilízalo desde tu línea de 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 

intentado en pocas computadoras con Maverick siempre funciona

Si está utilizando Bitnami RubyStack y se encontró con el problema similar. Prueba este

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

Mi problema con la carga de ese archivo de paquete fue un mal enlace simbólico. Por lo tanto, verifique el enlace y reemplácelo por uno nuevo si es necesario. Todo encajó en su lugar en ese punto. No estoy seguro de cómo sucedió eso, pero lo hizo. Primera vez que ocurrió un error de syntax así.

Estaba trabajando con el comando rails g model y obtuve este error:

 Library not loaded: libmysqlclient.18.dylib 

Lo intenté y funcionó para mí. Estaba 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 

¡Gracias!

Ahora estoy usando Yosemite 10.10.5 y obtuve el mismo error, así que acabo de ejecutar este comando en el terminal y se arregló con éxito.

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

también puedes probar:

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

Ambos funcionan bien para mí. Espero que pueda ser útil!

Obtuve este problema “Biblioteca no cargada: libmysqlclient.18.dylib” al importar MySQLdb de MySQL para 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 solución funciona para mí: 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 

Lo único que funcionó para mí es:

 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 

Reemplace las rutas de mysql y gems para que se ajusten a su sistema.

Después de buscar en Google y probar todo lo anterior … lo único que resolvió mi problema fue este comando:

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

Estoy usando un macbook pro, OSX 10 El Capitan. Darwin xxxx-MacBook-Pro.local 15.6.0 Darwin Kernel Versión 15.6.0: jue 23 de jun. 18:25:34 PDT 2016; XXX: xnu-3248.60.10 ~ 1 / RELEASE_X86_64 x86_64 Perl: v5.18.2 Mysql: 5.6.19