sql >> Databasteknik >  >> RDS >> Mysql

'odefinierad metod init för Mysql:Class'

Jag har Rails 3.1-rc4, MySQL 5.5.15 (nyss uppgraderat) och Mac OS X Lion. Mitt problem visade sig vara att filen mysql_api.bundle var länkad till rätt libmysqlclient.18.dylib-fil, men den kunde inte hitta biblioteket:

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)

Under körning hittas inte biblioteket. Mitt första försök att fixa detta var att lägga till ett LC_RPATH-kommando, men det räckte inte (kanske för att det var i slutet av listan). Istället ändrade jag direkt bibliotekslänken med:

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

Nu visar otool mig:

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)

och allt är lyckligt igen. Detta fungerar dock bara på Mac OS X.



  1. Varför måste vi använda främmande nycklar?

  2. Hur kan jag sortera ett mysql-resultat efter en lista med prioriterade ID?

  3. Fel vid anslutning till databasen:(med klassen org.gjt.mm.mysql.Driver) Satsen (1) har ingen öppen markör

  4. SQL ORDER BY-klausul för nybörjare