【发布时间】:2019-02-21 09:25:11
【问题描述】:
我完成了一个小应用程序的开发,并尝试将其投入生产。我将应用程序复制到一个新文件夹,使用新用户创建了一个新的 psql 数据库,调整了我的 database.yml 文件并尝试运行 rake db:schema:load 以使我的数据库处于正确的状态。 Rake 能够连接到我的数据库,因为执行了第一步,但之后,它会中止并显示以下消息。据谷歌告诉我,这应该是用户的问题。但是,由于 rake 可以执行第一步,我怀疑我有问题。
[root@l1vmgt08 web_qip_parser_v2]# rake db:schema:load
-- enable_extension("plpgsql")
-> 0.0171s
-- create_table("qip_changes", {:force=>:cascade})
-> 0.0919s
-- create_table("users", {:force=>:cascade})
-> 0.0989s
-- add_foreign_key("qip_changes", "users")
-> 0.0042s
-- enable_extension("plpgsql")
rake aborted!
ActiveRecord::NoDatabaseError: FATAL: role "root" does not exist
config/database.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: my_db_name
username: my_user_name
password: my_password
host: localhost
port: 5432
test:
<<: *default
database: my_db_name
production:
<<: *default
database: my_db_name
username: my_user_name
password: my_password
host: localhost
port: 5432
我的 Dev 和新的 Prod 用户的 Psql 输出用于权限比较:
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------------------+-------------------+----------+-------------+-------------+--------------------------------
my_dev_user_name | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | my_dev_db_name=CTc/postgres
my_user_name | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | my_db_name=CTc/postgres
所以在我看来,我正在尝试使用本地用户通过 UNIX 套接字进行连接。我找到了一些描述这个问题的文章。当我通过 TCP/IP 连接时,应该通过简单地将“主机:本地主机”添加到我的 database.yml 文件来解决此问题。但是,这正是我所做的,所以我不知道如何进行
这里是我的 pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
host all all 127.0.0.1/32 md5
服务器上正在运行另一个应用程序,它可以工作。它具有与我相同的 database.yml 配置集。
【问题讨论】:
标签: ruby-on-rails rake