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

在我的情况下,我输入数据库密码时忘了在“:”后留下一个空格。

相关问题