2012-02-07 9 views
18

Tengo una aplicación que ejecuta Ruby 1.9.2, Rails 3 y postgreSQL 8.3. Originalmente se configuró y se trabajó con postgreSQL 9.1, pero desinstalé 9.1 e instalé y cambié a 8.3 para garantizar la compatibilidad en una configuración de base de datos compartida de Heroku. Que estaba funcionando bien, pero no es ahoraRuby on Rails/PostgreSQL - Error de biblioteca no cargada al iniciar server-libq.5.dylib

Ahora, cuando se trabaja en esta aplicación, cuando corro una actualización de la base de datos me sale este error:

dlopen(/Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.12.2/lib/pg_ext.bundle, 9): Library not loaded: libpq.5.dylib 
    Referenced from: /Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.12.2/lib/pg_ext.bundle 
    Reason: no suitable image found. Did find: 
    /usr/lib/libpq.5.dylib: no matching architecture in universal wrapper - /Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.12.2/lib/pg_ext.bundle 

Y cuando trato de ejecutar el servidor me sale esto mensaje de error:

/Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.12.2/lib/pg.rb:4:in `require': dlopen(/Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.12.2/lib/pg_ext.bundle, 9): Library not loaded: libpq.5.dylib (LoadError) 
    Referenced from: /Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.12.2/lib/pg_ext.bundle 
    Reason: no suitable image found. Did find: 
    /usr/lib/libpq.5.dylib: no matching architecture in universal wrapper - /Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.12.2/lib/pg_ext.bundle 
    from /Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.12.2/lib/pg.rb:4:in `<top (required)>' 
    from /Users/michaeljmccoy/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require' 
    from /Users/michaeljmccoy/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require' 
    from /Users/michaeljmccoy/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each' 
    from /Users/michaeljmccoy/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require' 
    from /Users/michaeljmccoy/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each' 
    from /Users/michaeljmccoy/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require' 
    from /Users/michaeljmccoy/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler.rb:122:in `require' 
    from /Users/michaeljmccoy/www/mikemccoy/config/application.rb:7:in `<top (required)>' 
    from /Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.0.rc2/lib/rails/commands.rb:53:in `require' 
    from /Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.0.rc2/lib/rails/commands.rb:53:in `block in <top (required)>' 
    from /Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.0.rc2/lib/rails/commands.rb:50:in `tap' 
    from /Users/michaeljmccoy/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.0.rc2/lib/rails/commands.rb:50:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

Sé que son errores muy similares y probablemente tengan que ver con una ruta que falta. Sin embargo, cuando agrego la ruta a mi archivo .profile y reinicio la ventana del terminal, obtengo los mismos errores.

+0

Tus controles 'PATH' donde el shell busca ejecutables. Sus controles 'LD_LIBRARY_PATH' donde el shell busca bibliotecas. Dicho esto, me parece que tu pg joya se compiló con una versión diferente de la biblioteca PostgreSQL que la que tienes ahora. Probablemente solo necesites reinstalar pg. –

+0

Quité la gema actual de pg e intento volver a instalarla; sin embargo, recibo lo que parece ser un error bastante común con respecto a las bibliotecas de postgres que faltan. Esto es lo que estoy viendo: 'comprobación de pg_config ... sí Usando los valores de configuración de /Library/PostgreSQL/8.3/bin/pg_config comprobación de libpq-fe.h ... sí comprobación de libpq/libpq -fs.h ... sí buscando pg_config_manual.h ... sí buscando PQconnectdb() en -lpq ... no buscando PQconnectdb() en -llibpq ... no buscando PQconnectdb() en -lms/libpq ... no No se puede encontrar la biblioteca de cliente de PostgreSQL (libpq) *** extconf.rb falló *** –

+1

Recuerdo haber tenido que resolver esto en algún momento del pasado, y eso equivalía a tener que suministrar banderas manualmente al generador de gemas para indicarle dónde buscar los encabezados y las bibliotecas, No tengo la información disponible en este momento. –

Respuesta

35

Es posible que tenga que quitar y volver a instalar la gema pg, por lo que se compila con la versión correcta de Postgres.

+0

Acabo de toparme con este problema, ¡esto funcionó a la perfección! –

+1

Si esto no te ayuda, tal vez quieras ver esta pregunta: http://stackoverflow.com/questions/15512137/ruby-on-rails-postgresql-library-not-loaded-error-when-starting-server –

+0

Esta solución también funciona con Django, solo reinstale psycopg2 en el virtualenv. – Pietro

4

Para cualquier persona viendo este error y funcionando PostgresApp, esto es un problema conocido que fue corregido en la versión 9.2.4.3:

Discusión: https://github.com/PostgresApp/PostgresApp/issues/109

Instalador: https://github.com/PostgresApp/PostgresApp/releases/tag/9.2.4.3

Por supuesto, usted podría simplemente tome la última versión (http://postgresapp.com/). Ambas versiones me ayudaron a volver a funcionar con Rails 3.2.14 y Ruby 2.0.0. Sin embargo, tenga en cuenta que cuando instalé 9.2.4.3, mis bases de datos seguían enumeradas en psql, pero cuando instalé 9.3.0 (la versión actual en este momento), mis bases de datos ya no aparecían en la lista.

Cuestiones relacionadas