Rails更改默认项目数据库'sqlite'到PostgreSql

时间:2014-02-04 10:10:16

标签: ruby-on-rails postgresql

我正在学习红宝石。我已经创建了一些应用程序并使用它。

我想将数据库更改为postgres。我用

修改了gemfile
gem 'pg'

[pg已安装在usr / bin / pg] 然后使用更新database.yml postgresql使用sqllite。

pg连接不好:

FATAL: role "user" does not exist 

我已经创建了一些postgres用户。我应该改变什么才能与postgres合作?

development:
  adapter: postgresql
  database: db/development.postgresql
  pool: 5
  timeout: 5000

user:
  adapter: postgresql
  database: db/test.postgresql
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  database: db/production.postgresql
  pool: 5
  timeout: 5000

2 个答案:

答案 0 :(得分:0)

如果您未指定用于连接PostgreSQL的用户名,libpq将使用当前正在运行的用户的登录用户名进行连接。

libpq是Rails用来连接PostgreSQL的Pg gem。

因此,在database.yml中,指定PostgreSQL用户连接到数据库,与user:条目一样。确保这对应于PostgreSQL中存在的用户,pg_hba.conf允许该用户连接。

要了解详情,请参阅client authentication chapter of the PostgreSQL docs

答案 1 :(得分:0)

我知道这是一个两年前的问题,但我遇到了同样的问题,我通过更改config.yml的语法修复了它,然后我rake db:migrate

default: &default
adapter: postgresql
encoding: unicode
pool: 5

development:
<<: *default
database: yourappnamehere_development


test:
<<: *default
database: yourappnamehere_testdevelopment:


production:
<<: *default
database: YOURAPPNAME_production
username: YOURUSERNAME
password: <%= ENV['YOURAPPNAME_DATABASE_PASSWORD'] %>