ruby-on-rails - 无法运行“rake db:create”
问题描述
我尝试为我的 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!该角色还具有 Superuser、create Role 和 createDB 属性。
我不知道怎么了。。
编辑我的 database.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
解决方案
我做错了什么:
我使用 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
推荐阅读
- angular - 如何使用自定义 environment.test.ts 设置运行 Angular 7 单元测试?
- apache-flink - 应用窗口函数会丢弃结果中的事件
- android - Android 上的电子邮件列
- performance - 在 Neo4J 中加载大型密码文件
- python - 解开 DataFrame
- python - 将字符串列表交换为文本文件时程序停止工作
- r - 条形图中的 x 轴标签和扩展数据框
- java - 需要访问多个方法才能比较对象
- java - 如何将 JList 元素文本复制到剪贴板
- c++ - 从单个 *.cc* 源文件生成多个 *.oct* 文件以将 C 库连接到 Octave