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)
应该解决这个问题.
当服务器找不到从中提取数据所依赖的相应数据库时,就会出现此问题。
从一开始我就遇到了同样的问题,我更新了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)
安装您指定的数据库版本。
就这样。
我希望这有帮助。
检查database.yml所有设置是否正常。如果这是第一次并且您还没有创建数据库,请使用此命令来创建数据库
rake db:create
Run Code Online (Sandbox Code Playgroud)
如果数据库已经存在,请尝试重置数据库迁移,
rake db:migrate:reset
Run Code Online (Sandbox Code Playgroud)
希望它能解决问题。转到 Rails 控制台并尝试一些方法来检查其是否正常工作。