2011-02-23 80 views
0

我想讓mysql gem工作......而它只是不想。每次我做一個耙分貝:遷移,我得到MySQL Gem失敗:Snow Leopard上的MysqlCompat :: MysqlRes

uninitialized constant MysqlCompat::MysqlRes 

我mysql安裝從該磁盤映像:mysql-5.5.9-osx10.6-x86_64.dmg

我已經運行的創業板安裝與臭名昭著 ARCHFLAGS設置:

sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

而且我使用的紅寶石版本是雪豹默認:

[~/sites/testdb]$ file `which mysql` 
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64 
[~/sites/testdb]$ file `which ruby` 
/usr/bin/ruby: Mach-O universal binary with 3 architectures 
/usr/bin/ruby (for architecture x86_64): Mach-O 64-bit executable x86_64 
/usr/bin/ruby (for architecture i386): Mach-O executable i386 
/usr/bin/ruby (for architecture ppc7400): Mach-O executable ppc 

我的database.yml很簡單:

development: 
    adapter: mysql 
    host: 127.0.0.1 
    database: testdb 
    username: root 
    password: 

任何幫助,將不勝感激。

回答

1

您可以輕鬆解決您的問題。

如果不使用RVM:如果你使用RVM

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.8.1/lib/mysql_api.bundleruby 

install_name_tool -change libmysqlclient.16.dylib usr/local/mysql/lib/libmysqlclient.16.dylib [YOUR_GEMSET_PATH]/gems/mysql-2.8.1/lib/mysql_api.bundle 
0

你可以嘗試使用可能不會遭受同樣問題的mysql2寶石。

我發現它往往是好了很多使用rubymysqlMacPortsbrew保持在同一頁上的一切,而不是好惹的系統紅寶石。

OS X附帶的MySQL版本可能與您安裝的版本不匹配,或者gem安裝程序對使用哪個配置程序感到困惑。確保mysql_config正在返回正確的路徑。

1

我的博客上講述過去的一週:MySQL 5.5 on Mac OS X

我使用install_name_tool的替代解決方案是在你的shell啓動文件中設置DYLD_LIBRARY_PATH。這樣做的好處是你只做一次,而如果你使用install_name_tool,你會重複每次重新安裝或升級寶石。

mysql2 gem將有一個稍微不同的錯誤消息相同的問題。問題是如何構建libmysqlclient庫。它不包含完整路徑,因此與它鏈接的任何內容都無法在運行時找到它。

0

我遇到了同樣的錯誤。不過,在我的機器上,當我仍然在我的機器上安裝了mysql 5.1時,mysql gen就建立了。現在,在升級到MySQL 5.5之後,由原始版本/usr/local/mysql/lib/libmysqlclient.16.dylib引用的dyld文件不再存在並且被替換爲文件/usr/local/mysql/lib/libmysqlclient.18.dylib

完全重建的MySQL寶石固定的東西,即

gem uninstall mysql 
gem install mysql 
相關問題