2012-02-04 36 views
0

我會盡量簡短:
使用的Rails 3.2.1 mysql2的數據庫;在Ubuntu上運行11.10
發展環境一切正常就好
當我開始我的在生產服務器(使用WEBrick),它啓動了罰款,但加載任何頁面後,它會引發以下錯誤:
Rails和MySQL的 - 的ActiveRecord ::在生產環境中ConnectionNotEstablished

ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished): 
activerecord (3.2.1) 
lib/active_record/connection_adapters/abstract/connection_pool.rb:374:in 
retrieve_connection' 
activerecord (3.2.1) 
lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in 
`retrieve_connection' 
activerecord (3.2.1) 
lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in 
`connection' 
... 
/home/metjush/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:138:in 
`service' 
/home/metjush/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' 
/home/metjush/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/server.rb:191:in `block 
in start_thread' 

試圖找到錯誤的任何可能的來源,諮詢像一個十億個不同的網站和類似的報告後,我仍然無法找到什麼是錯的。我 database.yml的(上運行的本地主機,現在,有我在生產環境中設置了相同的發展,其中工程)是好的,我的Gemfile是好的(寶石「mysql2」包括,不用擔心) ,創建生產數據庫和rake db:migrate沒有任何問題遷移它...任何其他可能的錯誤來源我沒有想到或沒有在互聯網上找到?

我強調,這只是在生產中發生

感謝您的幫助


編輯張貼我的Gemfile:

source 'https://rubygems.org' 

gem 'rails', '3.2.1' 

gem 'mysql2' 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'jquery-rails' 

gem 'bcrypt-ruby', :require => 'bcrypt' 
gem 'rufus-scheduler' 
gem 'gmaps4rails' 

希望這有助於 - 雖然我真的不覺得有什麼問題。

編輯兩個
奇怪的是,我沒有問題,當我開始在生產環境中軌臺 - MySQL的查詢工作,模型實例可以毫無問題地保存。當我嘗試從瀏覽器訪問數據庫時,我只會遇到上述錯誤。

+0

如果將'\ config \ environment \ development.rb'複製到'\ config \ environment \ production.rb'中,它是否工作? – Baldrick 2012-02-04 18:04:43

+0

你有'username'和'password'在你的本地主機上正確設置?只有當rails無法連接到數據庫服務器或數據庫時纔會發生。 – Surya 2012-02-04 18:30:30

+0

複製'development.rb'成'production.rb'沒有任何改變,還是一樣的錯誤。 – metjush 2012-02-04 21:12:05

回答

1

我有同樣的問題。 Spree的最新版本仍然不兼容rails 3.2.0/3.2.1 所以使用rails 3.1.3和最新的spree版本

在我的情況下,rails版本是3.2.0,而spree的默認版本是0.40。 0。我將spree版本更改爲1.0.0.rc3,這表明我的rails兼容性問題,所以我將rails版本更改爲3.1.3,並且一切正常。

您可以使用最新的大禮包穩定版本我猜它0.70.3。

+0

謝謝。但我不使用狂歡,所以不能成爲問題。 – metjush 2012-02-08 11:27:57

+0

對不起,我想我張貼在錯誤的線程,意在狂歡的問題 – 2012-02-29 15:04:46

+0

很高興,這是在這裏公佈。我實際上有完全相同的問題。但是現在我們可以使用Spree 1.0.3。我試圖Rails 3.1.3和3.1.4無濟於事。 – Trip 2012-04-08 12:50:38

1

我在Rails引擎寶石遇到了類似的問題,並最終跟蹤它到一個聲明範圍(如:範圍:因爲,在那裏...)的類之一。評論說解決了ActiveRecord::ConnectionNotEstablished,但導致了一個失敗的規範(顯然)。

發動機使用的燃燒寶石包括規格的縮小Rails應用程序,也不管DB型的問題發生。希望在某種程度上有所幫助。

編輯:Here's a rails issue for it

+0

我不使用燃燒寶石要麼,所以我不認爲這應該是一個問題... – metjush 2012-02-08 16:09:09

+0

配售每個範圍聲明體拉姆達塊內已經讓我解決這個現在。看來它仍然是Rails 3.2.8中的一個問題。 – 2012-12-25 03:54:40

1

你必須先創建一個mysql數據庫。然後轉到您的應用程序目錄並使用您的數據庫信息編輯database.yml文件(〜/ config/database.yml)。

,如:

development: 
adapter: msql2 
database: your database path 
username: mysql username 
password: mysql password 
pool: 5 
timeout: 5000 
1

您可能已經有這個,但萬一別人得到這個頁面上移動,這裏有幾件事情要試試。

當您試圖在生產模式下啓動服務器時,您確定沒有輸入錯誤嗎?

bundle exec rails s --environment=production 

如果在「生產」一個錯字軌不會抱怨時,它會嘗試啓動服務器,但它會嘗試尋找在database.yml文件中說錯字,並因爲它不存在,你會得到你提到的錯誤

另一件嘗試:檢查你的database.yml文件是否格式正確。 YAML是真的挑剔有標籤和空間,以便仔細檢查做在控制檯

irb 
require 'yaml' 
a = YAML::load(File.open("config/database.yml")) 

如果你得到一個哈希回那麼你的文件是以下罰款,否則修復返回

2

對我的問題它歸結爲錯誤配置的database.yml文件。要確認正確的格式,你可以從目錄中執行下列操作,其中.yml文件存儲:

irb 
require 'yaml' 
a = YAML::load(File.open("database.yml")) 

,如果你有一個錯誤,你會看到這樣的響應...

irb(main):001:0> require 'yaml' 
=> true 
irb(main):002:0> a = YAML::load(File.open("database.yml")) 
Psych::SyntaxError: (<unknown>): could not find expected ':' while scanning a simple key at line 17 column 3 
     from C:/Ruby193/lib/ruby/1.9.1/psych.rb:203:in `parse' 
     from C:/Ruby193/lib/ruby/1.9.1/psych.rb:203:in `parse_stream' 
     from C:/Ruby193/lib/ruby/1.9.1/psych.rb:151:in `parse' 
     from C:/Ruby193/lib/ruby/1.9.1/psych.rb:127:in `load' 
     from (irb):2 
     from C:/Ruby193/bin/irb:12:in `<main>' 

在我的情況下,我輸入數據庫密碼時忘了在「:」後留下一個空格。

相關問題