ActiveRecord不会连接到postgresql DB,但rake db:migrate工作正常

时间:2012-09-13 21:03:48

标签: ruby-on-rails-3 postgresql activerecord ubuntu heroku

刚开始使用rails和Linux几天...... 我想部署到heroku,其中一个最好的做法就是在本地环境中使用postgresql了...我跟着其中一个教程并创建了一个示例应用程序

安装了pg gem。捆绑安装工作正常。 rake db:migrate可以为我的应用程序工作并创建表。但是......当我尝试运行我的rails页面时会出现这个错误:

ActiveRecord::ConnectionNotEstablished

这是完整追踪的结束:

> activerecord (3.2.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection'
activerecord (3.2.3) lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
activerecord (3.2.3) lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
activerecord (3.2.3) lib/active_record/query_cache.rb:67:in `rescue in call'
activerecord (3.2.3) lib/active_record/query_cache.rb:61:in `call'
activerecord (3.2.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:467:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `_run__4423031206660944571__call__1711406629982304701__callbacks'
activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.3) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'

我正在使用pgadmin 3来查看我的数据库。我创建了一个名为schaller的用户,它与我在Ubuntu中的用户相同

我的database.yml文件:

development:
  adapter: postgresql
  database: rails
  encoding: unicode
  username: schaller
  password: password123
  host: localhost
  pool: 5

为了让rails连接到postgres,我还能检查什么?

编辑:

在webrick上的netbeans中启动rails服务器时出现

错误

  

在2012-09-13 23:12:31 +0300开始获取127.0.0.1的“/ gangs /”     ActiveRecord :: ConnectionNotEstablished(ActiveRecord :: ConnectionNotEstablished):     activerecord(3.2.3)lib / active_record / connection_adapters / abstract /connection_pool.rb:398:in retrieve_connection' activerecord (3.2.3) lib/active_record/connection_adapters/abstract /connection_specification.rb:168:in retrieve_connection'      activerecord(3.2.3)lib / active_record / connection_adapters / abstract /connection_specification.rb:142:in connection' activerecord (3.2.3) lib/active_record/query_cache.rb:67:in rescue in call'      ...

编辑我的gem文件中的主要内容:

gem 'rails', '3.2.3'
gem 'pg'
gem 'thin'

编辑: 添加postgresql连接的日志

[local]
2012-09-15 18:05:35 IDT LOG:  connection received: host=127.0.0.1 port=44038
2012-09-15 18:05:35 IDT LOG:  connection authorized: user=schaller database=postgres
2012-09-15 18:05:35 IDT LOG:  connection received: host=127.0.0.1 port=44039
2012-09-15 18:05:35 IDT LOG:  connection authorized: user=schaller database=rails
2012-09-15 18:07:26 IDT LOG:  connection received: host=127.0.0.1 port=44048
2012-09-15 18:07:26 IDT LOG:  connection authorized: user=schaller database=rails

无论如何,当我连接pgadmin 3并且运行命令时,我看到正在写入日志,'rake db:migrate'但是当我运行我的rails应用程序时...

感谢

3 个答案:

答案 0 :(得分:1)

好的,所以它已经过了几天..我再次阅读所有的答案和评论,因为我真的需要一个解决方案! @Muhammad Sannan留下的评论诀窍。我是rails的新手,所以我不知道适配器是什么..但在快速谷歌搜索后我运行了这个命令:

gem install activerecord-postgresql-adapter

这就是诀窍:)。

现在一切正常。我只是不明白db:migrate如何在没有这个适配器的情况下工作..

答案 1 :(得分:0)

我认为问题出在你的database.yml上。你错过了生产部分,就像我认为你在heroku上使用的模式一样。只需添加

production:
  adapter: postgresql
  database: rails
  encoding: unicode
  username: schaller
  password: password123
  host: localhost
  pool: 5

到heroku上的database.yml

答案 2 :(得分:0)

好吧,如果你能在pgadmin中看到db,你知道基本的连接细节是正确的。如果您没有在pgadmin中修改,则端口号或其他详细信息也不太可能发生变化。

所以 - 我们需要找出发生了什么。第一步是在PostgreSQL中打开连接日志记录,看看rails是否实际连接。设置log_connections并重新启动PG,然后查看会发生什么。如果你没有在日志中看到任何内容,但是从pgadmin看到,那么rails没有看到正确的连接设置。

http://www.postgresql.org/docs/current/static/runtime-config-logging.html#GUC-LOG-CONNECTIONS