2009-06-13 192 views
67

我使用我們在WWDC獲得的光盤升級到Snow Leopard。Rails,MySQL和Snow Leopard

試圖運行我的一些軌的應用程式,現在抱怨SQL

(in /Users/coneybeare/Projects/Ambiance/ambiance-server) 
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql. 
Importing all sounds in /Users/coneybeare/Projects/Ambiance/ambiance-sounds/Import 32/Compressed/ 

-- AdirondackPeepers.caf 
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql. 
rake aborted! 
dlopen(/opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib 
    Referenced from: /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle 
    Reason: image not found - /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle 

(See full trace by running task with --trace) 

我可以發誓,我以前曾經解決了這個問題。問題是,

sudo gem install mysql 

不工作,並給出了錯誤:

Building native extensions. This could take a while... 
ERROR: Error installing mysql: 
    ERROR: Failed to build gem native extension. 

/opt/local/bin/ruby extconf.rb install mysql 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lm... yes 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lz... yes 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lsocket... no 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lnsl... no 
checking for mysql_query() in -lmysqlclient... no 


Gem files will remain installed in /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection. 
Results logged to /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out 

有沒有人得到的MySQL還與雪豹軌工作?如果是這樣,你的設置是什麼,更好的是,我能做些什麼來重現它?

回答

108

我剛剛經歷了同樣的痛苦去......這裏是爲我工作:從mysql.com

  • 運行以下命令

    1. 下載/安裝64位的MySQL 5.1.37:
     
    
        sudo gem update --system 
    
        sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 
    

    我也卸載時候從我10.5天左右浮動所有MySQL的寶石,可能這樣做,如果上述方法不爲你工作:)

  • 4

    我已經多次看到此問題。 幾乎每次我在一臺機器上建立mysql。我想,你必須通過你的mysqlconfig作爲gem install命令的一部分。

    sudo gem install mysql -- --with-mysql-config=/your/mysql/config 
    
    Provided configuration options: 
    --with-opt-dir 
    --without-opt-dir 
    --with-opt-include 
    --without-opt-include=${opt-dir}/include 
    --with-opt-lib 
    --without-opt-lib=${opt-dir}/lib 
    --with-make-prog 
    --without-make-prog 
    --srcdir=. 
    --curdir 
    --ruby=/usr/bin/ruby 
    --with-mysql-config 
    

    請記住,您需要mysql開發文件才能構建此gem。

    1

    我想我會在這裏回答我自己的問題。好像問題不是在mysql中,而是在mysql ruby​​綁定中。我明白了這一點,因爲當我連接Querius(我的mysql gui)時,它能夠連接。

    這裏是如何從源代碼構建固定的綁定:

    cd /tmp 
    wget http://www.tmtm.org/en/ruby/mysql/ruby-mysql-0.2.6.tar.gz 
    tar xvfz ruby-mysql-0.2.6.tar.gz 
    cd ruby-mysql-0.2.6 
    ./configure 
    make 
    sudo make install 
    

    有很多,我會從雪豹源建庫和他們保持雨後春筍般冒出來。 MacPorts似乎沒有足夠的更新所有的庫,所以我不想自己做。接下來:freetype(http://download.savannah.gnu.org/releases-noredirect/freetype/

    6

    我爲此奮鬥了很長時間,終於在Snow Leopard上工作。我最終從源代碼安裝了Ruby,RubyGems和MySQL(請參閱Hivelogic tutorial安裝Ruby和RubyGems,MySQL教程鏈接在底部)。我終於到安裝的寶石,但我仍然得到

    dyld: lazy symbol binding failed: Symbol not found: _mysql_init 
        Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle 
        Expected in: flat namespace 
    
    dyld: Symbol not found: _mysql_init 
        Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle 
        Expected in: flat namespace 
    
    Trace/BPT trap 
    

    我最終刪除mysql.bundle(我不知道這是)和它的所有工作。

    sudo rm -f /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle 
    

    希望能幫助別人。

    +1

    男人,感謝mysql.bundle上的領導。這在我的一臺機器上燒燬了我。 – Scott 2009-08-29 22:49:59

    +0

    這幫了我,謝謝你! – 2010-02-08 15:07:55

    +1

    「我終於刪除了mysql.bundle(我不知道這是幹什麼用的),它一切正常。」通過相同的邏輯,你可以嘗試刪除那個大的「mach_kernel」文件或那些「tmp」目錄。從Apple安裝的系統中刪除東西不是一個好主意。要研究爲什麼首先出現在那裏,然後決定是否可以刪除。 – 2012-01-02 08:30:54

    10

    將64位重建爲64位或安裝64位版本非常重要,但您還需要確保您將64位版本的mysql gem的本地部分構建爲好(如果您使用的是原始版本英特爾酷睿雙核處理器)。

    這裏是神奇的命令:

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

    應設置ARCHFLAGS如圖所示,每當你做一個創業板安裝與雪豹本地組件的上方。

    +0

    我有一個原始的Core Duo mac(第一代Macbook),所以沒有64位CPU。你將如何修改你的這個架構的命令? – 2009-09-18 14:43:09

    +0

    對於32位Macbook或Macbook Pro,請安裝常規x86版本的MySQL並使用以下命令: sudo env ARCHFLAGS =「 - arch i386」gem install mysql - --with-mysql-config =/usr/local/mysql/bin/mysql_config – 2009-09-18 14:48:01

    +0

    是的,如果你有第一代macbook,你應該在gem命令之前省略所有這些東西。 – Shebanator 2009-09-18 15:39:55

    1

    我有這個相同的問題,這是什麼對我有用。

    1. 安裝Snow Leopard和64位MySQL DMG。

    2. 創建的/etc/my.cnf指向我以前的MySQL數據目錄(如描述here)並運行

      sudo mysql_upgrade

    3. 打開IRB並使用(通過blog.costan.us/2009/07/rebuild-your-ruby-gems-if-you-update-to.html)重新安裝所有寶石。

      `gem list`.each_line {| line |系統'sudo gem install#{line.split.first}'}

    4. 卸載我安裝的MySQL gems。

    5. 安裝了MySQL寶石與

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

    就這樣,一切似乎到目前爲止是工作。 *敲木*

    2

    我在安裝雪豹後讓配置工作出現問題。我發現MAMP在http://www.mamp.info,它捆綁了Apache,PHP和MySQL。你像安裝應用程序一樣安裝它,它就可以工作。也許值得一試,而且它是免費的。

    網狀

    0

    我試過ARCHFLAGS伎倆多次與細微變化,但它從來沒有爲我工作。

    最後做了什麼工作是切換回與雪豹安裝的紅寶石和寶石的版本。

    我已經構建並安裝了我自己的版本,除了這個以外,它在各方面都爲我工作。 因爲一切似乎工作正常,我不禁猜測MySQL插件有一些時髦的假設。無論如何,我所做的只是將/ usr/bin再次切換到我的路徑中。我在/usr/local/ruby-1.8.7和/usr/local/ruby-1.9.1中安裝了ruby,以便能夠輕鬆切換。以爲我會提到它,因爲archflags解決方案似乎適用於很多人,但不是全部。

    0

    我將$ MYSQL_HOME/bin中的mysql_config程序重命名爲其他內容,以便gem安裝程序的配置腳本無法找到它。儘管我使用的是libs選項,但是gem安裝程序確實總是使用我的mysql安裝中的編譯設置,這是fat fat。但默認的ruby安裝只有x86_64,因此gem的編譯失敗。重命名mysql_config程序後,下面的命令效果很好,並安裝了寶石:

    sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql 
    
    0

    這篇文章解決了這個問題對我來說:)

    http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html

    • 此前豹

      sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

      • 豹一個PPC機上:

        sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

      • 雪豹(僅在英特爾)::

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

        一個Intel機器上

        sudo env ARCHFLAGS="-arch ppc" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    0

    如果您正在使用RVM安裝mysql的寶石,你需要使用下面的代碼來安裝它

    sudo env ARCHFLAGS="-arch x86_64" gem install mysql 
    

    這種方法Leopard Server的工作對我來說,沒有上述工作

    7

    如果您使用打包器,你可以使用「包配置」來設置適當的參數構建對MySQL像這樣:

    bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config 
    
    1

    設置ARCHFLAGS和傳遞--mysql-config = ...的指示似乎不足以在Snow Leopard上爲我解決這個問題。除了這樣做,我說:

    DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH" 
    

    我的bash的個人資料,這解決了這個問題對我來說。

    1

    如果您更喜歡家中brew,而不是手動安裝MySQL。

    請卸載現有的MySQL寶石(如果有的話):

    sudo gem uninstall mysql 
    

    找到 'mysql_config' 文件:

    find /usr -name 'mysql_config' 
    

    重新安裝mysql寶石:

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

    備註:取代/usr/local/bin/與相應的mysql_config路徑在步驟2中找到。同樣在我的blog上。

    1

    伊恩·塞爾比謝謝了很多,但我不得不在sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    我安裝到寶石的前部取出sudo和正在使用RVM我想請你不要使用sudo關鍵字。非常感謝。

    1

    我已經解決了這種方式:

    1. 安裝mysql的dmg文件後 
    2. 束配置build.mysql --with-mysql的-配置=在/ usr /本地/ MySQL的/斌//mysql_config
    3. ENV ARCHFLAGS = 「 - 拱x86_64的」
    4. 捆綁安裝
    1

    有過Rails中幾年休息,我只花了一些添建立我的開發環境。所以我想我會創建一個關於如何在SnowLeopard上安裝最新版本的Rails 3,MySQL和RVM的教程,希望能夠爲其他人節省一些時間。

    它使用Rails 3.0.10,MySQL 5.5.15和RVM 1.7.2於2011年8月21日運行。它應該適用於未來的Rails 3.0.x,MySQL 5.5.x和RVM 1.7.x版本。

    1. 如果尚未安裝,則安裝XCode。我用了4.0.2。不幸的是,這已經被蘋果撤回,但可能在互聯網上的其他地方提供。版本3.2.x可免費從Apple下載,但我沒有在本教程中進行測試,它可能也適用。

    2. 安裝rvm

      user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm) 
      
      user$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile 
      
      user$ source .bash_profile 
      
    3. 在RVM安裝版本紅寶石(例如1.9.2)的,basic usage instructions are here

      user$ rvm install 1.9.2 
      user$ rvm use 1.9.2 
      
    4. Create a gemset對於安裝在第2步中的RVM紅寶石(x爲版本號)。

      user$ rvm gemset create rails30x 
      user$ rvm [email protected] 
      
    5. 安裝Rails 3.0.x(x是版本號)。

      user$ gem install rails -v 3.0.x. 
      
    6. Download and install the MySQL 5.5.x package, the startup item, and the preferences pane。所有這些都包含在DMG安裝文件中。同時安裝MySQL WorkBench。

      查找/ usr/local/mysql-version-name/support-files(插入正確的MySQL目錄名)並編輯mysql.server(使用root權限)。第46行周圍找到讀取行:

      basedir= 
      datadir= 
      

      ,並改變他們閱讀(插入正確的MySQL目錄名):

      basedir=/usr/local/mysql-version-name 
      datadir=/usr/local/mysql-version-name/data 
      

      保存文件。 MySQL現在可以從偏好設置面板啓動。

      要讓rails 3使用mysql,請安裝mysql2 gem(請參閱下一步)。首先,您需要設置 DYLD_LIBRARY_PATH以包含MySQL庫目錄。要做到這一點,編輯你的〜/ .bash_profile中在 主文件夾,包括(插入正確的MySQL目錄名)以下:

      export DYLD_LIBRARY_PATH=/usr/local/mysql-version-name/lib:$DYLD_LIBRARY_PATH 
      

      沒有在DYLD_LIBRARY_PATH列入目錄的,消息大約找不到將出現庫 ,服務器將中止。

    7. Install the mysql2 gem.(截至2011年5月,版本0.2.7是Rails 3.0.x的最新工作版本)。

      user$ gem install mysql2 -v 0.2.7 
      
    8. 創建Rails應用程序,它的相應的數據庫(appname_development)。

      user$ rails new appname 
      
    9. 一下添加到應用程序的Gemfile中:gem 'mysql2', "0.2.7"

    10. 一下添加到應用程序的database.yml中:

      development: 
          adapter: mysql2 
          encoding: utf8 
          reconnect: false 
          database: appname_development 
          pool: 5 
          username: username 
          password: pwd 
          host: localhost 
      
    11. 啓動應用程序,並檢查 「關於應用程序的環境。」一切都應該正常工作。