2012-04-19 38 views
1

我在Mac OS X Lion環境中安裝了帶有RVM的Ruby和Rails。RVM安裝的mysql2 gem可以正常使用Rails ...但不能使用獨立的Ruby腳本

我使用Rails的mysql2 gem(使用MAMP庫而不是mysql安裝)正常工作。所以一切都很好...

直到我試圖編寫一個獨立的ruby腳本(出Rails上下文)。現在我無法讓mysql2 gem工作。

從腳本內或者從Ruby的命令行(IRB),該

require "mysql2" 

指令導致以下錯誤:

1.9.2p290 :001 > require "mysql2" 
dyld: lazy symbol binding failed: Symbol not found: _mysql_get_client_info 
    Referenced from: /Users/mick/.rvm/gems/ruby-1.9.2-p290/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle 
    Expected in: flat namespace 

dyld: Symbol not found: _mysql_get_client_info 
    Referenced from: /Users/mick/.rvm/gems/ruby-1.9.2-p290/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle 
    Expected in: flat namespace 

我試過幾個東西:

  • export DYLD_LIBRARY_PATH=/Applications/MAMP/Library/lib/mysql/:$DYLD_LIBRARY_PATH

  • 使用sudo ln -s /Applications/MAMP/Library/lib/mysql/libmysqlclient.16.dylib /usr/lib/libmysqlclient.16.dylib

毫無效果。我想我很快就會哭...

回答

11

奇怪的是,這發生在今天與一名同事。這是我做了什麼來解決它:

gem uninstall mysql2 
brew install mysql 
gem install mysql2 

就這麼簡單。希望它也適合你!

+2

通常這是由32位與64位庫綁定引起的。方法在那裏,但是對於錯誤的架構。重新安裝是解決這些違規問題的最簡單方法。 – tadman 2012-04-19 18:48:38

+0

謝謝,這個問題已經解決了你的詭計。我必須安裝Homebrew(http://mxcl.github.com/homebrew/)才能這樣做 - 我不願意這樣做,因爲我已經安裝了Macports和Fink - 但它修復了我的獨立Ruby問題而不禁用了我的工作Rails應用程序。在我的下一個乾淨的Mac安裝中,自制軟件可能是我唯一的UNIX軟件包管理器! – 2012-04-20 14:01:47

+0

爲我工作。謝謝! – 2013-11-21 12:00:52