2010-06-28 166 views
15

試圖用mysql啓動一個新的Rails 3 beta 4應用程序....運行OS X Snow Leopard。與以前版本的Rails相比,我對MySQL沒有任何問題。但現在,當我開始了Rails 3應用程序,我得到當我點擊「關於您的應用環境」了Rails的index.html啓動屏幕上出現以下錯誤:Rails 3 Mysql問題

未定義的方法`初始化」對於MySQL:類

+0

你的Gemfile裏有'gem'mysql''嗎? – 2010-06-28 01:41:03

+0

當官方發佈出來時,這個問題最終會讓我失望,對我來說,這只是我使用測試版時的一個問題。 – 2010-10-01 21:32:25

回答

16

將您的Gemfile更改爲使用'mysql2',它是一個更現代的驅動程序,並具有其他人提到的更好的功能。

默認情況下,新的Rails應用程序使用mysql2 gem。

+5

確保你也改變了你的database.yml文件來使用「adapter:mysql2」而不是「adapter:mysql」,否則你會得到一個mysql2 gem未被加載的錯誤。 – nikz 2011-03-23 03:18:06

+3

我還需要安裝一個mysql2 gem嗎?這看起來很接近。我得到了以下錯誤:耙中止! dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle,9):庫未加載:libmysqlclient.18.dylib 引用自:/ Library/Ruby/Gems /1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle 原因是:image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle /Users/chris/rails_projects/sienab/Rakefile:4 (請參閱使用--trace運行任務完整跟蹤) – chris 2011-06-02 11:49:07

+0

如果您需要準備好的語句,則可以使用Sequel gem,因爲MySql2 gem目前還不支持。 https://github.com/jeremyevans/sequel – 2015-05-01 23:41:39

3

我最終從mysql gem切換到ruby-mysql gem,工作。

+1

它真的有效~~ mysql.gem和mysql2.gem不工作... – lkahtz 2011-02-12 15:58:07

+1

這不是一個真正的解決方案,因爲您正在改變使用Ruby而不是本地代碼(稍慢)。你應該換成mysql2 gem,正如nzkoz所示。 – nikz 2011-03-23 03:30:55

1

我想我已經找到了解決問題的辦法。在我的情況下,問題是MySQL的寶石尚未使用捆綁器正確安裝。我這樣做的時候:

捆綁安裝mysql(noobish錯誤)

所有寶石去mysql目錄,但後來我檢查了捆綁寶石 的文檔和這樣做:

捆綁安裝bundler_files(知道寶石在未來的地方)

一切看起來幾乎沒問題,只是當安裝mysql gem時我有一些錯誤。 我注意到,這是因爲我的文件夾路徑「/ home/pawel/Aptana Studio Workspace/myrails_app」

如果您的文件夾路徑中有空格,則此gem將無法正確安裝,並且稍後會將路徑修改爲一個沒有空格,並嘗試安裝mysql的寶石,它不會顯示任何錯誤,但安裝將被損壞,因爲你將有一些額外的文件夾中有一些文件等,所以

DELETE創建者捆綁創業板文件夾並重新安裝帶有此命令的GEM:

捆綁安裝

解決了這個問題。

2

爲了簡單的使用,這是典型的(連接,查詢,迭代結果),我發現mysql2 gem比mysql或ruby-mysql gem快得多,並自動將值轉換爲正確的類型。它在Snow Leopard上完美安裝,而我無法獲得MySQL Gem的工作。在http://github.com/brianmario/mysql2

7

我碰到了同樣的問題

更多信息(ROR 3,OSX 10.6,MySQL的2.8.1寶石)。

您可以使用內部評級法來排除回報率:

irb 
require 'rubygems' 
require 'mysql' 
db = Mysql.connect('hostname', 'username', 'password', 'database') 

如果以上不工作,你可能想嘗試刪除mysql的寶石,並重新安裝它。我遇到一個帖子說bundle install可能會搞亂安裝而不顯示錯誤。

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

通過irb驗證工作是否正常,然後重新啓動導軌。

+0

即使對i386拱也適用:uname -a達爾文iMac-LZ.local 10.5.0達爾文內核版本10.5.0:星期五11月5日23:20:39 PDT 2010;根:XNU-1504.9。17〜1/RELEASE_I386 i386 – Vitalie 2010-12-07 23:25:15

+2

這樣做後,我得到錯誤:'未定義的方法'連接'從/Users/sscirrus/.rvm/rubies-1.9.2-p0/bin/irb:16 :在

'。如何解決這個問題? – sscirrus 2010-12-31 19:13:57

0

升級到Snow Leopard後,我遇到了同樣的問題。上安裝MySQL的寶石,我有一大堆有關文件,錯誤的話,上運行的服務器:

undefined method `init' for Mysql:Class 

我也有與其它寶石有些相似,但無關的問題,尤其是那些有C組分需要進行編譯,例如RedCloth和hpricot:

Unable to compile native extensions 

這些錯誤與基本64架構中的本機擴展有關。該解決方案是三倍:

  1. 我重新安裝XCode 4.升級到雪豹已經打破了我的C編譯器,所以一些寶石失敗了編譯。這讓我更接近了一步,但沒有解決問題。
  2. 我吹走並重新安裝了RVM。它似乎將寶石安裝在一個目錄中,並在另一個目錄中找到它們。這固定每個本機架構base64錯誤,但MySQL gem仍然失敗。
  3. 我刪除並將MySQL降級到版本5.1。這解決了MySQL的寶石問題。

現在一切都好了。

1

我認爲會發生什麼是mysql gem無法加載mysql動態庫(應該由本地MySQL安裝提供)。爲了測試是否發生這種情況,這樣做

$ irb 
1.9.2p320 :001 > require 'mysql_api' 
=> true 
1.9.2p320 :002 > 

如果無法加載這個低水平mysql_api,(這實際上提供的功能給mysql寶石),它會給你一些可能有用的錯誤。通常它無法找到動態庫。爲了解決這個問題,我發現一對夫婦的解決方案:

http://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard,做到這一點

對於整個系統的安裝

sudo env ARCHFLAGS="-arch i386" gem install mysql -- \ 
    --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \ 
    --with-mysql-include=/usr/local/mysql/include 

或本地安裝

env ARCHFLAGS="-arch i386" gem install mysql -- \ 
    --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \ 
    --with-mysql-include=/usr/local/mysql/include 

,然後從http://alexbraunstein.com/2011/08/12/library-loaded-libmysqlclient-18-dylib/放入.bash_profile

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