当前位置: 首页 > 知识库问答 >
问题:

运行rake db:schema:load时“致命:角色“根”不存在”

仲孙疏珂
2023-03-14

我完成了一个小应用程序的开发,并尝试将其投入生产。我将应用程序复制到一个新文件夹,用一个新用户创建了一个新的psql数据库,调整了my database.yml文件,并尝试运行rake db:schema:load以使我的数据库处于正确的状态。Rake能够连接到my db,因为第一步是执行的,但是在执行这些步骤之后,它会中止,并显示以下消息。谷歌告诉我,这应该是用户的问题。然而,由于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连接时,通过简单地将“host:localhost”添加到我的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配置集。

共有1个答案

赫连昕
2023-03-14

可能是由于缺少测试环境的username语句而发生的。请看这个问题

 类似资料:
  • 我最近安装了Ubuntu的最新版本,还不习惯。我在连接PostgreSQL和PGADMIN3时遇到了几个问题。 我找不到,在这一点上,我太害怕尝试追随任何其他帖子而使事情变得更糟。 我怎么才能让这件事成功呢?

  • 我是个新手。 我为Mac安装了Postgres.App。我在玩psql命令时不小心丢失了postgres数据库。我不知道里面是什么。 我目前正在编写一个教程:http://www.rosslaird.com/blog/building-a-project-with-mezzanine/ 而且我被困在 错误消息: 那么我应该采取哪些步骤呢?删除一个与psql相关的所有内容并重新安装所有内容? 谢谢你

  • 我是新来postgres和面临的困难,在连接到数据库后服务器重启。我在一个OS用户测试下创建了一个数据库pgdb。服务器重启后,我通过发出命令重新启动pgsql 启动postgreql-9.6服务:[OK] 如果我只是发出psql,我会被带到psql提示符,但是这里的数据路径与我之前设置的不同。当我尝试以postgres用户的身份连接到pgdb时,我得到错误: psql: FATAL:数据库"pg

  • 我是一个新的postgres和面临困难连接到数据库后,服务器重新启动。我已经在一个OS用户测试下创建了一个数据库pgdb。服务器重新启动后,我通过发出以下命令重新启动pgsql PSQL:致命:角色“测试”不存在 请建议

  • 为什么IntelliJ不使用我的配置中指定的角色,而要使用我的个人登录??不管我用什么角色,还是犯了同样的错误。 注意:如果我添加我的系统用户名作为角色,它可以工作,但我更愿意避免这一点。

  • 我正在设置我的PostgreSQL 9.1。我不能用PostgreSQL做任何事情:can't,can't;所有操作都返回错误消息 是我的帐户名,并且我在此帐户下PostgreSQL 9.1。 类似的错误对于帐户仍然存在。