6

我正在尝试使用 AWS Cloud9 启动我的 Rails 环境并使用 Postgres 数据库运行,但在尝试运行时遇到了问题rails db:migrate

最初我通过运行创建项目:

  1. rails new app_name -d postgresql
  2. 捆绑安装

Bundler 发现有问题gem 'pg',所以我跑了:

  1. sudo yum 安装 postgresql-devel
  2. sudo yum 安装 postgresql-server
  3. 须藤 postgresql initdb
  4. 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'] %>
4

1 回答 1

8

的每个用户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 问题。

于 2018-02-09T12:19:35.520 回答