无法运行“ rake db:create”

时间:2018-10-03 16:06:36

标签: ruby-on-rails ruby postgresql

我尝试为我的rails项目设置一个postgres数据库,但是每次我运行命令时:

rake db:create

我收到错误

    FATAL:  role "myrole" does not existCouldn't create database for{"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, 
"database"=>"web_db", "username"=>"myrole", "password"=>"password", "host"=>"localhost"}                                                            rake aborted!  

当我使用用户myrole登录到我的web_db数据库并键入\ du时,它将显示所有角色,包括myrole!该角色还具有超级用户,create Role和createDB属性。

我不知道怎么了。

编辑我的数据库。yml

development:                                                                                                           
  adapter: postgresql                                                                                                  
  encoding: unicode                                                                                                    
  database: myapp_development                                                                                          
  pool: 5                                                                                                              
  username: myrole                                                                                                    
  password: password                                                                                                  
  host: localhost                                                                                                                                                                                                                         
test:                                                                                                                  
  adapter: postgresql                                                                                                  
  encoding: unicode                                                                                                    
  database: myapp_test                                                                                                 
  pool: 5                                                                                                              
  username: myrole                                                                                                    
  password: password                                                                                                  
  host: localhost 

1 个答案:

答案 0 :(得分:2)

我做错了什么:

我用su postgres打开psql并创建角色。

我要做的是使用以下命令从用户登录:

psql -h localhost -d web_db -U postgres or sudo -u postgres psql

然后我必须创建一个角色并分配权限:

CREATE ROLE myrole;

ALTER ROLE myrole WITH login;

ALTER ROLE myrole WITH CREATEDB;

ALTER ROLE myrole WITH PASSWORD 'password';

然后我可以运行命令:rake db:setup