簡體   English   中英

升級到Snow Leopard后的MySQL gem問題

[英]MySQL gem problem after upgrading to Snow Leopard

剛升級到Snow Leopard。 在經歷了很多混亂之后,我設法讓MySQL運行起來。

現在我想讓我的Rails環境工作。 對於一個項目,我使用的是Rails 3.0.3和Ruby 1.8.7

我使用以下命令安裝了MySQL2 gem:

sudo gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

當我啟動rails服務器時,我收到以下錯誤:

/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): no suitable image found.  Did find: (LoadError)
/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: mach-o, but wrong architecture - /Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
from /Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2.rb:7

有沒有人遇到類似的問題,知道如何解決這個問題? 我不是開發人員而是設計師,所以這不是我強大的領域。 感謝任何指針。

卸載/刪除所有rvm,ruby和rails實例,然后按照本指南進行全新安裝: http//www.cowboycoded.com/2010/12/04/setting-up-rails-3-on-mac-osx-雪豹紋10-6-4 /

一切順利。 Hoorah!

也在一個階段降級MySQL,所以不確定這是否會對最終結果產生影響。

在升級到Snow Leopard之后,我昨天和其他一些寶石一起經歷了這樣的事情。 我得到了非常相似的錯誤,因為當SL正在尋找64位版本時,它試圖使用舊的32位庫。 首先,確保您已經安裝了64位版本的MySQL,因為您現在將使用它。

然后,讓我的東西:寶石卸載mysql2

事實證明我已經安裝了兩次gem並且Rails試圖加載錯誤的(32位)版本,即使我在其他地方安裝了正確的版本。

此外,當您安裝mysql gem時,您可能想嘗試

export ARCHFLAGS="-arch i386 -arch x86_64"

在你sudo gem install mysql2之前

有幾件事要做:

如果你沒有在RVM的控制下重新編譯Ruby,你就會想要這樣做。 在Snow Leopard之前,他們將編譯為i386 32位應用程序。 之后,他們需要x86 64位。 因此,使用RVM在Ruby 1.8.7上執行rvm uninstall ,然后rvm install 您可以通過運行rvm list來檢查是否需要這樣做:

rvm list

rvm rubies

   ruby-1.8.7-p330 [ x86_64 ]
=> ruby-1.9.2-p136 [ x86_64 ]

當為Snow Leopard正確配置時,Ruby(1.8.7或1.9+)將為x86_64。

之后,您可以運行gem pristine來重建所有寶石。 作為該過程的一部分,它將重建本機驅動程序,它們也應該重新編譯為x86_64。

此外,保持RVM相對最新也是一個好主意。 最新的轉發,今晚是v1.1.13,所以如果你的年齡較大,你可能想做rvm get head趕上它。

幫助診斷事物的有用命令是: gem envrvm info

我最近有一個類似的問題,當rails啟動rails控制台或rails服務器時,導致“但錯誤的架構沒有找到合適的映像”錯誤。

在關聯的.dylib文件和gem上運行file通常會返回適用的x86_64版本或包含它的通用版本。 最后,我追溯到我正在運行的Ruby的實際版本。 / usr / bin / ruby​​可執行文件本身只與i386兼容。 這真是令人震驚,因為我認為新的xcode和osx 10.7會給我帶來64位紅寶石。

使用RVM,我安裝了另一個ruby實例(同樣是1.8.7)。 這樣做需要我安裝一個新的readline實例(我使用自制軟件, brew install readline )並使用rvm install 1.8.7 --with-readline-dir=/usr/local/Cellar/readline/6.2.1/安裝rvm rvm install 1.8.7 --with-readline-dir=/usr/local/Cellar/readline/6.2.1/

執行此操作后,切換到使用我的新ruby實例( rvm use 1.8.7 ),我的所有寶石都消失了(RVM安裝以某種方式改變了我的默認gem_path。) gem install rake ,然后是gem install bundler ,然后是bundle install讓我起來跑步。

簡而言之,請確保您的ruby可執行文件與您的ruby / rails軟件包內置的指令集版本相匹配。

這篇博文也非常有用: http//www.markhneedham.com/blog/2010/07/08/installing-ruby-1-9-2-with-rvm-on-snow-leopard/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM