2009-08-27 111 views
28

我有一個Ruby on Rails項目,我是一個託管服務器上開發,但已經決定與我的本地Windows機器上工作。Ruby on Rails的連接問題

要開始我想我會確保我可以把我的模型從舊的項目,並把它們放到一個新的項目,然後在控制檯對它們進行查詢。這失敗了。

編輯以反映更準確的問題: rails建立以查詢我的模型的連接只能運行一個查詢,然後爲所有後續查詢提供「未連接​​」異常。任何人都知道發生了什麼事?我檢查了我的配置,很多。如果在MySQL服務器上有一些我不知道的信息,我願意看看。

堆棧跟蹤:

Price.find(1) 
ActiveRecord::StatementInvalid: Mysql::Error: query: not connected: SHOW FIELDS FROM `prices` 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:212:in `log' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapter.rb:320:in `execute' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapter.rb:466:in `columns' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1271:in `columns' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1279:in `columns_hash' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1578:in `find_one' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1569:in `find_from_ids' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:616:in `find' 
     from (irb):2 

我覈實,我的MySQL數據庫正在接受連接,並且具有我所期望的數據和結構。我已經仔細檢查了我的連接等。任何人都可以點亮燈光嗎?

+0

你在督促,開發或測試運行?如果你改變這個,會發生什麼? – marcgg 2009-08-27 20:23:07

+0

可連接,查詢失敗 >>需要 「的MySQL」 => [] >> testconn = Mysql.real_connect( 「本地主機」, 「lco_admin」, 「****」, 「lastcall_dev」) =># >> testconn.get_server_info => 「5.1.37社區」 >> testconn.host_info => >> testconn.list_tables => [ 「bar_schedules」 「通過TCP/IP本地主機」 , 「酒吧」, 「bars_features」, 「飲料」, 「功能」, 「價格」, 「復發」, 「special_schedules」, 「特價」, 「時間跨度」] >> testconn.query( 「SELECT * FROM價格」 ) Mysql的::錯誤:查詢:7::未從(IRB)連接 在'查詢」 ˚F rom(irb):7 – marr75 2009-08-27 20:30:25

+0

我遇到了與您@ marr75完全相同的問題。如果我能解決這個問題,我一定會發布到這裏! – jonsidnell 2009-08-28 00:39:57

回答

82

我發現在aptana forum解決這個問題。

那裏說的是MySQL 5.1客戶端庫在Rails 2.2中不能很好地發揮作用 他們提供的解決方案很簡單:下載一箇舊的MySQL客戶端庫(libmySQL.dll)並將其複製到您的Ruby \ bin文件夾中。

這爲我工作(Windows XP中,紅寶石1.8.6,2.3.3的Rails和MySQL 5.1.33)

+0

甜!爲我工作:) – jonsidnell 2009-08-29 15:56:01

+2

非常感謝。令人失望的是,在許多地方,mysql和ruby項目相互鏈接,包括一步一步地指導如何讓這個堆棧在windows上工作,這個項目還沒有被提及。 – marr75 2009-08-31 13:45:19

+3

哇,很高興我找到了這篇文章!現在效果很好,謝謝你的提示! – 2009-09-25 23:11:10

3

檢查是否有最新的MySQL寶石(鋼軌> 2.1.2)

驗證你的config/database.yml文件(適配器,密碼)。檢查是否設置正確所有的環境(開發,測試PROD)

確認你的MySQL運行

+0

幾次檢查寶石,實際上檢查了我所有的寶石。我知道數據庫配置是正確的,因爲如果我有意破壞它,我不再能夠獲得有關我的配置的信息(一個或多個服務器信息 - ish查詢失敗)。出於同樣的原因,我知道它可以與Mysql進行通信,並且mysql正在運行(如果我停用該服務,則不能再從歡迎頁面中看到有關我的配置的信息)。 – marr75 2009-08-28 15:58:54

1

下載一個較舊的MySQL客戶端庫

+0

答案已經發布。謝謝你。 – marr75 2010-11-02 05:08:04