Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

'undefined method init for Mysql:Class'

Tôi có Rails 3.1-rc4, MySQL 5.5.15 (vừa được nâng cấp) và Mac OS X Lion. Vấn đề của tôi hóa ra là tệp mysql_api.bundle được liên kết với tệp libmysqlclient.18.dylib bên phải, nhưng nó không thể tìm thấy thư viện:

otool -L ~/.rvm/gems/ruby-1.9.2-p180/gems/mysql-2.8.1/lib/mysql_api.bundle 
/Users/rowland/.rvm/gems/ruby-1.9.2-p180/gems/mysql-2.8.1/lib/mysql_api.bundle:
    /Users/rowland/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.1.9.1.dylib (compatibility version 1.9.1, current version 1.9.1)
    libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

Trong thời gian chạy thư viện không được tìm thấy. Nỗ lực đầu tiên của tôi để sửa lỗi này là thêm lệnh LC_RPATH, nhưng điều đó là không đủ (có lẽ vì nó nằm ở cuối danh sách). Thay vào đó, tôi đã trực tiếp thay đổi liên kết thư viện bằng:

install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib ~/.rvm/gems/ruby-1.9.2-p180\@rails-3.1/gems/mysql-2.8.1/lib/mysql_api.bundle

Bây giờ otool chỉ cho tôi:

otool -L ~/.rvm/gems/ruby-1.9.2-p180\@rails-3.1/gems/mysql-2.8.1/lib/mysql_api.bundle 
/Users/rowland/.rvm/gems/[email protected]/gems/mysql-2.8.1/lib/mysql_api.bundle:
    /Users/rowland/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.1.9.1.dylib (compatibility version 1.9.1, current version 1.9.1)
    /usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

và tất cả đều hạnh phúc trở lại. Tuy nhiên, điều này chỉ hoạt động trên Mac OS X.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để truy vấn cơ sở dữ liệu MySQL từ ứng dụng Rails không có mô hình?

  2. Đồng bộ cơ sở dữ liệu Mysql giữa hai cơ sở dữ liệu

  3. Cách nối hai cột vào cùng một bảng

  4. Doctrine2.3 và OneToOne thác vẫn tồn tại dường như không hoạt động

  5. Đang cài đặt magento, gặp lỗi kết nối cơ sở dữ liệu.