我正在尝试使用 AWS Cloud9 通过 Postgres 数据库启动并运行我的 Rails 环境,但在尝试运行 rails db:migrate
时遇到了问题。
最初我通过运行创建项目:
- rails new app_name -d postgresql
- 捆绑安装
Bundler 在查找 gem 'pg'
时遇到问题,所以我运行了:
- sudo yum install postgresql-devel
- sudo yum install postgresql-server
- sudo postgresql initdb
- sudo 服务 postgresql 启动
服务器随后启动良好,我认为一切都很好,直到运行 rails db:migrate
返回错误:
PG::ConnectionBad: FATAL: 角色“ec2-user”不存在
我不确定如何解决这个问题。
有人建议我可能需要进入我的 psql shell 并更改或创建一个新角色,但我不确定如何更改 ec2-user
。
也有人建议我的 pg_hba.conf
文件可能需要一些改动。我有那个文件的路径,但不确定如何编辑它,或者这是否是我真正想做的事情。
有什么建议吗?我在下面包含了我的 database.yml
:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: my_app_development
test:
<<: *default
database: my_app_test
production:
<<: *default
database: my_app_production
username: my_app
password: <%= ENV['MY_APP_DATABASE_PASSWORD'] %>
最佳答案
psql
的每个用户还需要一个与其名称匹配的相应数据库。
在 bash 命令行:
sudo -u postgres createuser -s ec2-user
sudo -u postgres createdb ec2-user
上面应该允许您的用户访问psql
,但它不会让rails 进行迁移。您必须先执行以下操作:
sudo su postgres
psql
ALTER USER "ec2-user" WITH SUPERUSER;
\q
exit
我很快就把它们放在一起了,所以如果您遇到任何问题,请告诉我。
如果您的 config/database.yml
使用与 bash 用户不同的登录用户,您也应该为该用户重复上述所有步骤。
最后,虽然您使用的是 Cloud9,但这只是一个简单的 Rails/Postgres 问题,而不是 AWS 问题。
关于ruby-on-rails - AWS Cloud 9 上的 Rails 和 Postgresql : role "ec2-user" does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48210717/