Lea*_*RoR 59 ruby postgresql ruby-on-rails ruby-on-rails-3
我使用Heroku作为我的应用程序,它需要PostgreSQL,但你仍然可以使用SQLite3进行开发.由于Heroku强烈建议不要使用2个不同的数据库,所以我决定改用PostgreSQL进行开发.我安装了gem pg
并且还去了官方PostgreSQL站点以获取Windows安装程序并且还更改了我的database.yml
.在安装过程中,它需要一个PostgreSQL的密码,所以我做了一个.我不得不改变pg_hba.conf
文件使用md5
到trust
,为了得到过去: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
Run Code Online (Sandbox Code Playgroud)
在摆脱了这个之后,我现在得到了这个:
$ 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}
Run Code Online (Sandbox Code Playgroud)
我仍然有我development.sqlite3
和text.sqlite3
现在,会是这个问题?必须做什么?
以下是我的全部要点:https://gist.github.com/1522188
mu *_*ort 131
添加用户名database.yml
,也可以使用您的应用程序名称(或名称的某个变体)作为用户名,我将app_name
用作占位符:
development:
adapter: postgresql
encoding: utf8
database: app_development
pool: 5
username: app_name
password:
Run Code Online (Sandbox Code Playgroud)
然后使用psql.exe
以下命令在PostgreSQL中创建用户(AKA"角色"):
$ psql -d postgres
postgres=# create role app_name login createdb;
postgres=# \q
Run Code Online (Sandbox Code Playgroud)
第一行是在你的终端,接下来的两行在里面psql
.然后做你的rake db:create
.
该User
用户可能是一个默认值,但user
已采取了 PostgreSQL中用于其他用途,所以你不得不引用它,如果你想使用保存的情况下User
为用户名:
postgres=# create role "User" login createdb;
Run Code Online (Sandbox Code Playgroud)
无论如何,最好为每个应用程序创建一个用户.
您也希望为自己的test
参赛作品做类似的事情database.yml
.
PostgreSQL将尝试使用您的帐户(登录)名称创建数据库(如果username
未在您的帐户中指定)config/database.yml
.在OS X和Linux上,您可以看到这是谁whoami
.看起来你正在使用Windows.
解决方案A: 创建一个匹配它正在寻找的用户的PostgreSQL用户.例如
createuser --superuser some_user
Run Code Online (Sandbox Code Playgroud)
解决方案B: 通过显式设置用户名来更改数据库用户,如mu的答案所示.
小智 6
例如,如果您的计算机上有特定帐户/用户,则称为postgres.
然后执行此命令将提示您输入角色名称.
sudo -u postgres createuser --interactive
Run Code Online (Sandbox Code Playgroud)
然后做
rake db:create
Run Code Online (Sandbox Code Playgroud)
应该管用!
归档时间: |
|
查看次数: |
35410 次 |
最近记录: |