[英]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架構中的本機擴展有關。 解決方案有三個:
現在一切都好了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.