Rails数据库迁移报错:角色‘manuel’不存在问题求助
解决Rails执行
rails db:migrate时的PostgreSQL角色不存在问题 嘿,这个问题我太熟了!这是因为你的PostgreSQL里还没创建名为manuel的数据库角色(也就是数据库用户),Rails连接数据库的时候找不到这个角色才报的错。咱们一步步来搞定:
先进入PostgreSQL的管理员命令行:
如果你是Linux/macOS系统,打开终端执行:sudo -u postgres psql(macOS如果用Homebrew装的PostgreSQL,直接输
psql postgres也能进入管理员界面)在PostgreSQL命令行里创建你的专属角色:
执行这条命令,记得把密码换成你自己想设置的(后面配置要用到):CREATE ROLE manuel WITH LOGIN PASSWORD 'your_custom_password';给这个角色添加创建数据库的权限:
Rails需要创建开发和测试数据库的权限,所以执行:ALTER ROLE manuel CREATEDB;退出PostgreSQL命令行:
输入\q然后回车就行。修改Rails项目的数据库配置文件:
打开项目里的config/database.yml,找到default、development和test区块,把username改成manuel,password换成你刚才设置的密码,示例如下:default: &default adapter: postgresql encoding: unicode pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: manuel password: your_custom_password development: <<: *default database: Shopper_development test: <<: *default database: Shopper_test最后重新执行迁移命令:
rails db:migrate
这样应该就能顺利跑通迁移了!如果还是有问题,先检查PostgreSQL服务有没有正常启动,比如Ubuntu可以用sudo systemctl status postgresql查看状态。
内容的提问来源于stack exchange,提问作者manuel Chala
相关产品推荐
相关产品推荐

