簡體   English   中英

Rails 3 Mysql問題

[英]Rails 3 Mysql Problems

嘗試使用mysql啟動新的Rails 3 beta 4應用程序....運行OS X Snow Leopard。 使用以前版本的Rails,我對MySQL沒有任何問題。 但是現在當我啟動Rails 3應用程序時,當我在Rails index.html啟動屏幕上單擊“關於您的應用程序環境”時,我收到以下錯誤:

mysql的未定義方法`init':Class

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

新的Rails應用程序默認使用mysql2 gem。

我遇到了同樣的問題(RoR 3,OSX 10.6,mysql 2.8.1 gem)。

您可以使用irb來排除RoR:

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

如果上述方法不起作用,您可能想嘗試刪除mysql gem並重新安裝它。 我遇到一個帖子說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驗證工作正常,然后再次啟動rails。

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

對於簡單的用法,這是典型的(連接,查詢,迭代結果),我發現mysql2 gem比mysql或ruby-mysql gems快得多,並且自動將值轉換為正確的類型。 並且它完全安裝在Snow Leopard上,而我無法讓mysql gem工作。

有關更多信息,請訪問http://github.com/brianmario/mysql2

我想會發生的是mysql gem無法加載mysql動態庫(應該由本機MySQL安裝提供)。 要測試是否發生這種情況,請執行此操作

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

如果它無法加載這個低級別的mysql_api (實際上它為mysql gem提供了這些功能),它將為你提供一些可能有用的錯誤。 通常它無法找到動態庫。 為了解決這個問題,我找到了幾個解決方案:

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 

我想我找到了問題的解決方案。 在我的情況下,問題是沒有使用捆綁器正確安裝mysql gem。 當我這樣做時:

捆綁安裝mysql(noobish錯誤)

所有的寶石都去了mysql目錄,但后來我檢查了bundler gem的文檔,並做了這樣的事情:

bundle install bundler_files(知道未來寶石的位置)

一切看起來幾乎沒有,除了當mysql gem安裝時我遇到了一些錯誤。 我注意到這是因為我的文件夾路徑“/ home / pawel / Aptana Studio Workspace / myrails_app”

如果你的文件夾路徑中有空格,這個gem將無法正確安裝,稍后當你修改一個沒有空格的路徑並嘗試安裝mysql gem WOW顯示任何錯誤,但安裝將被破壞,因為你會有一些額外的文件夾那里有一些文件等等

刪除BUNDLER創建的GEM文件夾並使用此命令重新安裝GEMS:

捆綁安裝

這解決了這個問題。

您可以嘗試切換到mysql2 gem,它應該為您解決所有問題。 請參閱: https//github.com/brianmario/mysql2/

升級到Snow Leopard后,我遇到了同樣的問題。 在安裝MySQL gem時,我收到了一些關於文檔的錯誤,然后,在運行服務器時:

undefined method `init' for Mysql:Class

我還與其他寶石有一些相似但無關的問題,特別是那些需要編譯的C組件,如RedCloth和hpricot:

Unable to compile native extensions

這些錯誤與base 64架構中的本機擴展有關。 解決方案有三個:

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

現在一切都好了。

暫無
暫無

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

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