2012-02-07 19 views
18

Tôi có ứng dụng đang chạy Ruby 1.9.2, Rails 3 và postgreSQL 8.3. Ban đầu nó được thiết lập và làm việc với postgreSQL 9.1, nhưng tôi đã gỡ cài đặt 9.1 và cài đặt và thay đổi thành 8.3 khả năng tương thích bảo mật trên thiết lập cơ sở dữ liệu được chia sẻ Heroku. Nó được chạy ok, nhưng nó không phải bây giờRuby on Rails/PostgreSQL - Thư viện không được tải lỗi khi khởi động server- libq.5.dylib

Bây giờ, khi làm việc trên ứng dụng này, khi tôi chạy một nâng cấp cơ sở dữ liệu tôi nhận được lỗi này:

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 

Và khi tôi cố gắng để chạy các máy chủ tôi có được điều này thông báo lỗi:

/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>' 

Tôi biết chúng là những lỗi rất giống nhau và có thể phải thực hiện với một đường dẫn bị thiếu. Tuy nhiên, khi tôi thêm đường dẫn đến tệp .profile của tôi và khởi động lại cửa sổ đầu cuối, tôi nhận được các lỗi tương tự.

+0

Điều khiển 'PATH' của bạn nơi vỏ tìm kiếm tệp thi hành. 'LD_LIBRARY_PATH' của bạn kiểm soát nơi vỏ tìm kiếm thư viện. Điều đó nói rằng, điều này có vẻ với tôi như đá quý pg của bạn đã được biên soạn với một phiên bản thư viện PostgreSQL khác với phiên bản bạn có bây giờ. Bạn có thể chỉ cần cài đặt lại pg. –

+0

Tôi đã loại bỏ đá quý pg hiện tại và đang cố gắng cài đặt lại, tuy nhiên tôi nhận được những gì có vẻ là một lỗi khá phổ biến về việc thiếu thư viện postgres. Dưới đây là những gì tôi thấy: 'kiểm tra pg_config ... có Sử dụng giá trị cấu hình từ /Library/PostgreSQL/8.3/bin/pg_config kiểm tra cho libpq-fe.h ... có kiểm tra cho libpq/libpq -fs.h ... có kiểm tra pg_config_manual.h ... có kiểm tra PQconnectdb() trong -lpq ... không kiểm tra PQconnectdb() trong -llibpq ... no kiểm tra PQconnectdb() trong -ms/libpq ... no Không thể tìm thấy thư viện máy khách PostgreSQL (libpq) *** extconf.rb không thành công *** –

+1

Tôi nhớ phải giải quyết điều này tại một số điểm trong quá khứ, và nó được tính đến phải tự cung cấp cờ cho người xây dựng đá quý để cho biết nơi tìm tiêu đề và thư viện, Tôi không có thông tin ngay bây giờ. –

Trả lời

35

Bạn có thể cần phải xóa và cài đặt lại đá quý pg, do đó, nó được biên dịch dựa vào phiên bản đúng của Postgres.

+0

Chỉ cần chạy vào vấn đề này, điều này đã làm việc hoàn hảo! –

+1

Nếu điều này không giúp bạn, bạn có thể muốn xem câu hỏi này: http://stackoverflow.com/questions/15512137/ruby-on-rails-postgresql-library-not-loaded-error-when-starting-server –

+0

Giải pháp này cũng hoạt động với Django, chỉ cần cài đặt lại psycopg2 trong virtualenv. – Pietro

4

Đối với bất cứ ai nhìn thấy lỗi này và chạy PostgresApp, đây là một vấn đề được biết đến đã được cố định trong phiên bản 9.2.4.3:

Thảo luận: https://github.com/PostgresApp/PostgresApp/issues/109

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

Tất nhiên, bạn có thể chỉ cần lấy phiên bản mới nhất (http://postgresapp.com/). Cả hai phiên bản đã giúp tôi sao lưu và chạy với Rails 3.2.14 và Ruby 2.0.0. Tuy nhiên, lưu ý rằng khi tôi cài đặt 9.2.4.3 cơ sở dữ liệu của tôi vẫn được liệt kê trong psql, nhưng khi tôi cài đặt 9.3.0 (phiên bản hiện tại vào lúc này), cơ sở dữ liệu của tôi không còn được liệt kê nữa.

Các vấn đề liên quan