Biblioteca no cargada: error libmysqlclient.16.dylib al intentar ejecutar el 'servidor Rails' en OS X 10.6 con la gema mysql2

Resuelto Jonty Brook asked hace 13 años • 0 respuestas

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.

Jonty Brook avatar Dec 28 '10 21:12 Jonty Brook
Aceptado

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
bloveless avatar May 23 '2011 17:05 bloveless

¡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
Jonty Brook avatar Dec 30 '2010 04:12 Jonty Brook

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/

nduplessis avatar Feb 16 '2011 10:02 nduplessis

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

Luke avatar Nov 10 '2013 19:11 Luke

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.

Ogapo avatar Dec 28 '2010 21:12 Ogapo