没有ActiveRecord :: Base的连接池

时间:2016-07-04 02:50:37

标签: ruby-on-rails postgresql activerecord

我尝试使用rails 4.2.6开发应用。我试图将postgres用于数据库。服务器启动正常,但是当我尝试加载页面时,它会抛出这个"没有连接池用于ActiveRecord :: Base"错误。

它可能是什么?

修改

pg gem没有正常工作。我必须在启动服务器之前对其进行评论,然后在我的GemFile中取消注释。我意识到我使用的是Ruby 2.3而不是Ruby 2.0(按照预期)。我删除了ruby 2.3并在ruby 2.0环境下设置了所有内容。它现在正常运作。

我曾在某处读过“pg'更新的Rails版本中的gem,要求人们使用&gem; gem install pg --pre'而是安装宝石。我试过了,但后来我的应用程序要求' pg'宝石在我的GemFile中,以及上面提到的问题再次出现了。

这就是我的database.yml文件的结果:

ListView

8 个答案:

答案 0 :(得分:5)

当服务器找不到从中提取数据所依赖的相应数据库时,就会出现此问题。

最后我遇到了同样的问题,我更新了Sqlite3的版本,它高于当前Puma Server版本支持的版本。

我只需要卸载Sqlite3版本,然后安装当前版本的Puma Server支持的版本。

gem uninstall sqlite3

这将卸载Sqlite3的更新版本,然后运行下面的代码,说明当前服务器支持的版本。

gem install sqlite3

或者您也可以打开Gemfile,然后包含您正在使用的数据库的版本

gem 'sqlite3', '~> 1.3.6' 

N / B: sqlite3版本是撰写此答案时的最新版本。

然后运行

bundle update

安装指定的数据库版本。

我希望这会有所帮助。

在有帮助的情况下将此答案赞为有用,或在答案下方评论以进一步说明。

答案 1 :(得分:2)

如果所有设置都正常,请检查database.yml。如果是第一次并且您没有创建数据库,请使用此命令创建数据库

rake db:create

如果数据库已存在,请尝试重置数据库迁移,

rake db:migrate:reset

希望它能解决问题。转到rails控制台并尝试检查其是否正常工作。

答案 2 :(得分:2)

对于PostgreSQL,您的database.yml文件看起来应该是这样的:

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: 5

development:
  <<: *default
  database: your_db_name

还要确保安装了gem:在Gemfile中:

gem 'pg'

最后,重新启动服务器。

希望有所帮助

编辑:我差点忘了,确保你的PostgresSQL正在运行,检查this link进行下载和设置。

答案 3 :(得分:0)

我在创建数据库之前尝试访问模型时遇到了同样的问题。

确保至少运行一次rake db:migrate

如果您已经运行了迁移,请按照之前的答案中的说明检查数据库。

答案 4 :(得分:0)

Rails 5

新应用

使用Postgresql进行测试和开发

规范运行,因此Rails可以连接到Postgresql

但是当我启动网络应用程序时,我得到了#34;找不到ID为primary的连接池。&#34;

Ran&#39; bin / rails db:migrate:reset&#39;并重新启动应用程序。有效。不知道为什么。

database.yml中:

    development:
      adapter: postgresql
      encoding: unicode
      database: rails5_development
      pool: 5
      username: foo
      password: bar
      host: localhost
      port: 5432

    test:
      adapter: postgresql
      encoding: unicode
      database: rails5_test
      pool: 5
      username: foo
      password: bar
      host: localhost
      port: 5432

答案 5 :(得分:0)

我只需要重新启动服务器即可消除警告。

答案 6 :(得分:0)

在数据库中运行rails db:migrate时,将根据您的迁移文件创建行。您可以查看架构以获取更多信息。

答案 7 :(得分:0)

在我的情况下,config/database.yml从环境中获取变量:

# ...
test:
  <<: *default
  database: <%= ENV.fetch("DB_NAME") %>_test
  username: <%= ENV.fetch("DB_USER") %>
  password: <%= ENV.fetch("DB_PASS") %>
# ...

当我运行bundle exec rails spec的新终端窗口未初始化这些变量时,就会出现错误。

正在做

$ export DB_NAME=mydb
$ export DB_USER=myuser
$ export DB_PASS=mypass
$ bundle exec rails spec

解决了该问题。