angular色不存在,使用PostgreSQL时无法创build数据库
我使用Heroku作为我的应用程序,它需要PostgreSQL,但是你仍然可以使用SQLite3进行开发。 由于Heroku强烈build议不要有2个不同的数据库,我决定改用PostgreSQL进行开发。 我安装了gem pg
,并且去了官方的PostgreSQL站点来获取Windows安装程序,同时也改变了我的database.yml
。 在安装期间,它需要PostgreSQL的密码,所以我做了一个。 我不得不使用md5
来更改pg_hba.conf
文件,以便获得过去的trust
: fe_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.sqlite3
和text.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用!