我的localhost:3000
给了我这个错误:
为数据库适配器指定'postgresql',但未加载gem。将
gem 'pg'
添加到您的Gemfile中(并确保其版本达到ActiveRecord所需的最低版本)。
宝石已安装并已捆绑。令我困惑的是,Heroku应用程序运行正常。当我尝试运行rake db:create
时,我也遇到了同样的错误。
我目前正在参加学习RoR的课程,我在社区论坛上提出这个问题,但没有运气。
我的宝石文件是:
source 'https://rubygems.org'
ruby '2.2.1'
gem 'rails', '4.2.4'
gem 'sass-rails', '~> 5.0'
gem 'bootstrap-sass', '~> 3.3.5'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg', '~>0.18.3'
gem 'rails_12factor'
end
group :development, :test do
gem 'byebug'
end
group :development do
gem 'spring'
end
我的database.yml是:
default: &default
adapter: postgresql
pool: 5
timeout: 5000
development:
<<: *default
adapter: postgresql
encoding: unicode
database: my_development
username: davideye
password: 1234
host: localhost
port: 5432
test:
<<: *default
database: my_test
username: davideye
password: 1234
production:
<<: *default
database: my_production
username: davideye
password: 1234
答案 0 :(得分:1)
在database.yml中,您已为开发定义了postgres
,而在gemfile中已定义sqlite3
进行开发。所以要么改变你的database.yml,要么在开发中的gemfile中而不是sqlite3
写pg
。
答案 1 :(得分:1)
这里的问题是你的Gemfile。
group :production do
gem 'pg', '~>0.18.3'
gem 'rails_12factor'
end
这告诉Bundler只在生产中加载pg
(这就是为什么它适用于Heroku)。
您可以将gem 'pg' ...
移出group :production
块,以便它也包含在开发中,或者在开发环境中使用sqlite3。
答案 2 :(得分:0)
当您对sqlite3
和dev
env
test
时
# Gemfile
group :development, :test do
gem 'sqlite3'
end
将适配器更改为开发和测试块中的sqlite3
。
# config/database.yml
default: &default
pool: 5
timeout: 5000
development:
<<: *default
adapter: sqlite3
database: db/my_development.sqlite3
test:
<<: *default
adapter: sqlite3
database: db/my_test.sqlite3
production:
<<: *default
adapter: postgresql
database: my_production
username: davideye
password: 1234
host: localhost
port: 5432
答案 3 :(得分:0)
问题是因为你在生产模式和工业模式中添加了宝石'pg'。对于开发,你根据你的gemfile使用'sqlite',但你根据你的database.yml使用postgresql进行开发
所以,从生产区块中删除gem'pg'&amp;把它放在任何街区之前。