没有ActiveRecord :: Base的连接池

Osc*_*uea 14 postgresql activerecord ruby-on-rails

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

会是什么呢?

编辑

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

我曾经读过某些地方,在较新的Rails版本中有'pg'宝石存在一些问题,要求人们使用'gem install pg --pre'代替安装宝石.我试过了,但后来我的应用程序在我的GemFile中需要'pg'宝石,而且,上面提到的问题再次出现了.

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

  default: &default
     adapter: postgresql
     encoding: unicode
     host: localhost
     username: -------
     password: -------
     pool: 5

  development:
     <<: *default
     database: myDbName
Run Code Online (Sandbox Code Playgroud)

gol*_*das 28

如果您从rake任务中遇到此错误,则可能是您在:environment任务之前未运行任务.

更改:

task :task_name do
end
Run Code Online (Sandbox Code Playgroud)

至:

task task_name: :environment do
end
Run Code Online (Sandbox Code Playgroud)

应该解决这个问题.


Pro*_*ton 7

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

从一开始我就遇到了同样的问题,我更新了Sqlite3的版本,它高于当前Puma Server版本支持的版本。

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

gem uninstall sqlite3
Run Code Online (Sandbox Code Playgroud)

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

gem install sqlite3
Run Code Online (Sandbox Code Playgroud)

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

gem 'sqlite3', '~> 1.3.6' 
Run Code Online (Sandbox Code Playgroud)

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

然后跑

bundle update
Run Code Online (Sandbox Code Playgroud)

安装您指定的数据库版本。

就这样。

我希望这有帮助。


M. *_*rim 2

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

rake db:create
Run Code Online (Sandbox Code Playgroud)

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

rake db:migrate:reset
Run Code Online (Sandbox Code Playgroud)

希望它能解决问题。转到 Rails 控制台并尝试一些方法来检查其是否正常工作。