Mysql
 sql >> база данни >  >> RDS >> Mysql

'недефиниран метод init за Mysql:Class'

Имам Rails 3.1-rc4, MySQL 5.5.15 (току-що надстроен) и Mac OS X Lion. Проблемът ми се оказа, че файлът mysql_api.bundle е свързан с правилния файл libmysqlclient.18.dylib, но не може да намери библиотеката:

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)

По време на изпълнение библиотеката не е намерена. Първият ми опит да поправя това беше да добавя команда LC_RPATH, но това не беше достатъчно (може би защото беше в края на списъка). Вместо това директно промених връзката към библиотеката с:

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

Сега otool ми показва:

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)

и всичко отново е щастливо. Това обаче работи само на 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. Пишете с главна буква. MySQL

  2. java.net.SocketException:Счупена тръба

  3. MySQL:Потърсете един и същ низ в множество колони

  4. SQL стандартно извикване UPSERT

  5. Дублиране / копиране на записи в същата MySQL таблица