我在我的rails项目中使用sqlite gem,因为我必须将应用程序放在Heroku上,而Heroku不支持sqlite,我在我的Gemfile中添加了 pg gem。
gem 'pg', '0.17.1'
但现在我无法在我的机器上本地运行该项目。
为数据库适配器指定'sqlite3',但未加载gem。将
gem 'sqlite3'
添加到您的Gemfile中(并确保其版本达到ActiveRecord所需的最低版本)。
我得到了这个。
请帮忙。
答案 0 :(得分:3)
为数据库适配器指定'sqlite3',但未加载gem。 将gem'sqlite3'添加到您的Gemfile中(并确保其版本位于 ActiveRecord要求的最低要求。)
将gem 'sqlite3', group: :development
添加到Gemfile
并执行bundle install
。
此外,您应该将pg gem
放在生产组中,以避免本地的进一步冲突
#Gemfile
group :production do
gem 'pg', '0.17.1'
end
<强> OR 强>
gem 'pg', '0.17.1', group: :production
AND
gem 'sqlite3', group: :development
更新#1
另外,您应修改database.yml
以指定development
和production
的不同适配器
#database.yml
development:
adapter: sqlite3
database: your_db
username: your_username
password: your_pass
-----
-----
production:
adapter: postgresql
database: your_production_db
username: your_production_username
password: your_production_pass
------
------
更新#2
致命:用户“postgres”的对等身份验证失败
如果您设置 基于密码的身份验证 ,则需要执行以下步骤
1.为Ubuntu打开文件pg_hba.conf
,它将在/etc/postgresql/9.x/main
中并更改此行:
local all postgres peer
到
local all postgres md5
2.重启服务器
sudo service postgresql restart
3.登录 psql 并设置密码
psql -U postgres
ALTER USER postgres with password 'your-pass'; #as in your database.yml
答案 1 :(得分:0)
在您的database.yml中,将适配器:sqlite3更改为适配器:postgresql
答案 2 :(得分:0)
将gem 'sqlite'
替换为gem文件中的gem 'pg'
。
删除Gemfile.lock
并运行bundle update
然后,将以下内容粘贴到config / database.yml
中development:
adapter: postgresql
encoding: unicode
database: nameofyourapp_development
pool: 5
username: username
password: password
test:
adapter: postgresql
encoding: unicode
database: discuss_test
pool: 5
username: username
password: password
根据您的配置替换用户名和密码。对于我的用户名,用户名为postgres
,密码为1234
。
Heroku不需要您在database.yml中定义生产设置。推送应用后,它会自动配置。
如果您收到FATAL: Peer authentication failed for user "postgres"
问题出在您的/etc/postgresql/9.3/main/pg_hba.conf
文件中。这一行:
local all postgres peer
应该是
local all postgres md5
更改此/etc/init.d/postgresql reload