我尝试使用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
答案 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
解决了该问题。