2012-02-04 25 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' 

エラーのいずれかの可能性のあるソースを見つけようと、10億さまざまなウェブサイトと同様のレポートのように相談した後、私はまだ間違っているものを見つけることができないのです。私の database.yml(現時点ではlocalhost上で動作しており、本番環境での動作環境と同じです)は正常です、私の Gemfileは問題ありません(gem 'mysql2'は含まれています。 、本番データベースが作成され、rake db:migrateはそれを移行する際に問題はありませんでした...私が考えなかった、またはインターネット上で見つけられなかったエラーの可能性のある他のソース?私が強調

、これが唯一の生産にあなたの助けを

おかげ


私のGemfileを投稿EDIT起こる:

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' 

は、この情報がお役に立てば幸いです - ただしを私は本当に間違っているとは思わない。奇妙なことに

EDIT TWO
私は本番環境でレールコンソールを起動したとき、私は問題がない - MySQLのクエリが動作し、モデルインスタンスは問題なく保存することができます。私はブラウザからデータベースにアクセスしようとすると上記のエラーが発生します。

+0

'\ config \ environment \ development.rb'を' \ config \ environment \ production.rb'にコピーすると動作しますか? – Baldrick

+0

localhostに 'username'と' password'が正しく設定されていますか?これは、レールがDBサーバーまたはデータベースに接続できない場合にのみ発生します。 – Surya

+0

'development.rb'を' production.rb'にコピーしても何の変更もありませんでした。 – metjush

答えて

1

私は同じ問題がありました。最新のバージョンはまだレール3.2.0/3.2.1と互換性がありません ですので、レール3.1.3と最新のスプーンバージョンを使用してください

私の場合、レールバージョンは3.2.0で、スプーリーデフォルトバージョンは0.40でした。 0。私はspreeのバージョンを1.0.0.rc3に変更したので、レールの互換性の問題が表示されたので、レールのバージョンを3.1.3に変更し、すべてうまくいった。

私はその0.70.3を推測する最新のスプレー安定版を使用することができます。

+0

ありがとう。しかし、私は酒宴を使用していないので、それは問題になることはできません。 – metjush

+0

申し訳ありませんが、私は間違ったスレッドで投稿したと思う、夢中になる問題で掲示されることを意図しました –

+0

これはうれしいです。私は実際にまったく同じ問題を抱えています。しかし、今私達はSpree 1.0.3までです。私はRails 3.1.3と3.1.4を無駄にしようとしました。 – Trip

1

Railsエンジンの宝石で同様の問題が発生し、最終的にクラスの1つでスコープ宣言(例:scope:owing、where ...)まで追跡されました。それを解説するとActiveRecord::ConnectionNotEstablishedが解決されましたが、明らかに失敗した仕様になりました。

エンジンはCombustion gemを使用してスペック用の小型レールアプリを組み込みましたが、問題はdbタイプに関係なく発生しました。希望は何らかの形で役立ちます。

編集:Here's a rails issue for it

+0

私は燃焼宝石を使用していないので、それは問題ではないと思います... – metjush

+0

ラムダブロック内に各スコープ宣言の本文を配置することで、これを回避できます。 Rails 3.2.8ではそれがまだ問題であると思われます。 –

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ファイルになりました。 ...

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>' 
をあなたがエラーを持っている場合は、応答して、このようなものが表示されます

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

:あなたは.ymlファイルが格納されているディレクトリから次の操作を行うことができ、正しい書式設定を確認するため、

私のケースでは、データベースのパスワードを入力するときに ":"の後ろに空白を残すのを忘れていました。

関連する問題