heroku的sqlite问题

时间:2015-06-16 04:42:00

标签: ruby-on-rails sqlite heroku

我在我的rails项目中使用sqlite gem,因为我必须将应用程序放在Heroku上,而Heroku不支持sqlite,我在我的Gemfile中添加了 pg gem。

 gem 'pg', '0.17.1'

但现在我无法在我的机器上本地运行该项目。

  

为数据库适配器指定'sqlite3',但未加载gem。将gem 'sqlite3'添加到您的Gemfile中(并确保其版本达到ActiveRecord所需的最低版本)。

我得到了这个。

请帮忙。

3 个答案:

答案 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以指定developmentproduction不同适配器

#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

后,您需要重新加载postgresql服务