Biblioteca no cargada: error libmysqlclient.16.dylib al intentar ejecutar el 'servidor Rails' en OS X 10.6 con la gema mysql2
He estado luchando con esto durante algún tiempo.
Instalé Rails 3, gem, mysql en mi máquina Snow Leopard. Todo iba bien hasta que creé mi primer proyecto e intenté ejecutarlo.
rails server
Al ejecutar esto obtengo:
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$
Por lo que puedo decir, el problema está en la gema mysql2. MySQL parece estar funcionando bien y mi Gemfile hace referencia a mysql2, mi archivo Database.yml también parece estar bien.
El error menciona
Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Y todavía
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 está ahí!?
Si uso la antigua gema mysql, WEBrick arranca bien. Pero eso no es lo ideal, ¿verdad?
¡He probado todo lo que Google puede darme! Cualquier ayuda muy apreciada.
Nunca pude conseguir que ninguna de estas respuestas funcionara para mí, pero este es el comando que utilicé para que funcionara para mí. De esta manera no necesitas usar install_name_tool cada vez que actualizas tu mysql
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
¡He resuelto esto, finalmente!
Reinstalé Ruby y Rails en RVM. Estoy usando Ruby versión 1.9.2-p136.
Después de reinstalar en rvm, este error seguía presente.
Al final el comando mágico que lo solucionó fue:
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
Esta solución funcionó muy bien para mí:
Agregue lo siguiente a su ~/.profile
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/
Para mí, esto se debió simplemente a que había actualizado mysql pero no había actualizado la gema mysql2; una reinstalación de la gema lo solucionará...
gem pristine mysql2
Tengo el mismo problema. Parece que no puede encontrar la biblioteca libmysqlclient. Una solución temporal que me ha funcionado es la siguiente:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
No estoy seguro de dónde especifica la configuración la ruta de carga o en qué está configurada, pero mi instalación de MySQL no parecía estar allí. Publicaré nuevamente si encuentro una solución más permanente.
Editar: en realidad, esta solución parece abordar el problema con mayor precisión.