angular色不存在,使用PostgreSQL时无法创build数据库

我使用Heroku作为我的应用程序,它需要PostgreSQL,但是你仍然可以使用SQLite3进行开发。 由于Heroku强烈build议不要有2个不同的数据库,我决定改用PostgreSQL进行开发。 我安装了gem pg ,并且去了官方的PostgreSQL站点来获取Windows安装程序,同时也改变了我的database.yml 。 在安装期间,它需要PostgreSQL的密码,所以我做了一个。 我不得不使用md5来更改pg_hba.conf文件,以便获得过去的trustfe_sendauth: no password supplied尝试创build数据库时fe_sendauth: no password supplied

 # TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 trust # was md5 # IPv6 local connections: host all all ::1/128 trust # was md5 # Allow replication connections from localhost, by a user with the # replication privilege. #host replication postgres 127.0.0.1/32 trust #host replication postgres ::1/128 trust 

虽然摆脱了,我现在得到这个:

 $ rake db:create (in C:/app) FATAL: role "User" does not exist Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"utf8", "database"=>"app_test", "pool"=>5, "username"=>nil, "password"=>nil} 

我仍然有我的development.sqlite3text.sqlite3目前,这可能是问题吗? 必须做什么?

这是我的全部要点: https : //gist.github.com/1522188

为你的database.yml添加一个用户名,不妨使用你的应用程序的名称(或名称的一些变体)作为用户名,我将使用app_name作为占位符:

 development: adapter: postgresql encoding: utf8 database: app_development pool: 5 username: app_name password: 

然后使用psql.exe在PostgreSQL中创build用户(AKA“angular色”):

 $ psql -d postgres postgres=# create role app_name login createdb; postgres=# \q 

第一行是在你的terminal里,接下来的两行是在psql里面。 然后做你的rake db:create

User用户可能是默认的,但user已经被用于PostgreSQL中的其他目的,所以如果你想使用User名作为用户名,那么你必须引用它来保留大小写:

 postgres=# create role "User" login createdb; 

无论如何,您最好还是为每个应用程序创build一个用户。

你也可以在database.yml为你的test条目做类似的事情。

如果你的config/database.yml没有指定username PostgreSQL将尝试用你的账号(login名)创buildconfig/database.yml 。 在OS X和Linux上,你可以看到whoami是谁。 看起来你正在使用Windows。

解决schemeA: 创build一个与正在查找的PostgreSQL用户相匹配的用户 。 例如

 createuser --superuser some_user 

解决schemeB:通过明确地设置用户名(如mu的答案中所示)来更改数据库用户。

如果您的计算机上有特定的帐户/用户,例如postgres,则称为postgres。

然后执行这个命令将会提示你input一个angular色名称。

 sudo -u postgres createuser --interactive 

然后做

 rake db:create 

应该pipe用!