質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

1651閲覧

RDS(PostreSQLエンジン)上でマイグレーションが失敗する

mikepp

総合スコア11

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/08/03 09:01

実現したいこと

Amazon Linux 2 上で Rails のマイグレーションを実行したいです。

以下のリンクを参考にAWSを使ってポートフォリオをデプロイしようとする中でエラーが発生しました。
[AWS(EC2)にRailsアプリをイチから上げる方法【その3〜サーバー設定とRailsアプリの配置編〜】 - Qiita][1]

VPCとEC2の準備、公開鍵の設定、PostgreSQLの環境変数の設定などは終わっています。

DBのマイグレーションをしようとしたところエラーが発生しました。

解決方法ありましたら教えていただきたいです。
よろしくお願い致します。

発生している問題・エラーメッセージ

[yuki@ip-10-0-0-53 golfour]$ bundle exec rake db:migrate RAILS_ENV=production rake aborted! PG::ConnectionBad: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? /home/yuki/.rbenv/versions/2.5.1/bin/bundle:23:in `load' /home/yuki/.rbenv/versions/2.5.1

補足情報:

[yuki@ip-10-0-0-53 golfour]$ rpm -qa | grep postgres postgresql-11.5-5.amzn2.0.1.x86_64

補足情報(FW/ツールのバージョンなど)

開発環境:
Ruby 2.5.1
Rails 5.2.4.3
Amazon Linux2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

追記

環境変数として次の内容を設定する必要があります:

  • DB_NAME
  • DB_USERNAME
  • DB_PASSWORD
  • DB_HOSTNAME

console

1PG::ConnectionBad: could not connect to server: No such file or directory 2 Is the server running locally and accepting 3 connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

上記のエラーメッセージは、Rails アプリケーションが
ローカルに PostgreSQL が起動している前提で接続しようとして失敗していることを示しています

yaml

1default: &default 2adapter: postgresql 3encoding: unicode 4# For details on connection pooling, see Rails configuration guide 5# http://guides.rubyonrails.org/configuring.html#database-pooling 6pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 7 8development: 9<<: *default 10database: golfour_development 11 12test: 13<<: *default 14database: golfour_test 15 16production: 17<<: *default 18database: <%= ENV['DB_NAME'] %> 19username: <%= ENV['DB_USERNAME'] %> 20password: <%= ENV['DB_PASSWORD'] %> 21host: <%= ENV['DB_HOSTNAME'] %>

上記の設定であれば、環境変数 DB_HOSTNAME が未設定であると、
規定のローカルデータベースへの接続を試みているものと思われます

元の回答

1

Amazon Linux 2 にインストールした PostgreSQL の CLI で接続できますか?

console

1psql -h [RDS のエンドポイント] -U [RDS の Username] [RDS の DB NAME]

参考: PostgreSQL: Documentation: 9.1: psql

CLI でも接続できなければ、セキュリティグループの設定などが原因であることが考えられます
セキュリティグループでは TCP の 5432 ポートを許可する必要があります

参考: 【AWS】cliでEC2からRDSに接続する【postgresql】 - Qiita

2

config/database.ymlproductionhost に RDS のエンドポイントが設定されていますか?

投稿2020/08/03 09:29

編集2020/08/06 06:07
y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikepp

2020/08/03 10:21

回答ありがとうございます。 CLIでは接続できます。 [yuki@ip-10-0-0-53 ~]$ psql --host=golfour-postgresql.cu0oqputapjt.ap-northeast-1.rds.amazonaws.com --port=5432 --username=Yuki --password --dbname=golfour_production psql: /lib64/libpq.so.5: no version information available (required by psql) psql: /lib64/libpq.so.5: no version information available (required by psql) パスワード: psql (11.5、サーバ 11.6) SSL 接続 (プロトコル: TLSv1.2、暗号化方式: ECDHE-RSA-AES256-GCM-SHA384、ビット長: 256、圧縮: オフ) "help" でヘルプを表示します。 golfour_production=>
winterboum

2020/08/03 11:44

database.ymlを載せてください
mikepp

2020/08/06 05:56

返信遅れて申し訳ございません。 database.ymlは以下の通りです。 環境変数は.envで管理しています。 default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see Rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default database: golfour_development test: <<: *default database: golfour_test production: <<: *default database: <%= ENV['DB_NAME'] %> username: <%= ENV['DB_USERNAME'] %> password: <%= ENV['DB_PASSWORD'] %> host: <%= ENV['DB_HOSTNAME'] %>
y_shinoda

2020/08/06 06:08

回答に追記しました
mikepp

2020/08/06 06:34

早速の返信ありがとうございます。 hostには.envファイルにRDSのエンドポイントを入力して管理しています。 CLIにでは繋がるので何が原因なのでしょう...
y_shinoda

2020/08/06 06:59

次のようなコマンドをこちらにすると変化はありますでしょうか?: bundle exec rails db:migrate RAILS_ENV=production rake db:migrate RAILS_ENV=production rails db:migrate RAILS_ENV=production 次のような情報を見つけました: https://teratail.com/questions/190308#reply-282749
mikepp

2020/08/07 04:13

エラー解決しました! 原因はGemfileが group :development, :test do gem "dotenv-rails" end となっていてproduction環境で反映されてなかったためでした... 丁寧に問題を掘り下げていただいたおかげで、頭の中が整理されてミスに気づくことができました 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問