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

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

ただいまの
回答率

89.11%

Herokuにデプロイできない

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 86

Eita

score 0

<前提・実現したいこと>
Herokuにデプロイしたい。

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

現在railsでアプリを作成しています。
これまでDBにmysqlを使用し、herokuにもデプロイできていたのですが、
mysql周りでエラーが多発したので、本番環境DBをpostgresに移行したところ、デプロイできません。
具体的にはheroku run rails db:migrateを実行すると、

PG::ConnectionBad: could not connect to server: Connection timed out
    Is the server running on host "YYYYY.cleardb.net" (11.11.111.111) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection timed out
    Is the server running on host "YYYYY
.cleardb.net" (2.222.22.22) and accepting
    TCP/IP connections on port 5432?


というエラーメッセージが出てしまいます。

その他、出ているエラーとしてはpsqlコマンドを打つと

psql: error: could not connect to server: FATAL:  database "xxxxxx" does not exist
heroku[router]: at=error code=H12 desc="Request timeout"

などです

試したこと

・gemfileのproductionに'pg'追加変更
・database.ymlにadapter: postgresqlを追加
・postgresl.confを編集しlisten_addresses = '*'に変更

恐らく、mysqlからpostgresに変更する際に設定すべきことをしそこねているのかと思いますが、今の私では解決まで至らず、大変詰まっております。
何卒お力添え頂けると幸いです。
よろしくお願いいたします。

以下はそれぞれのコマンドを打った際の結果です。一部文字を変えています。

psql -l

                           List of databases
   Name    |  Owner  | Encoding | Collate | Ctype |  Access privileges  
-----------+---------+----------+---------+-------+---------------------
 postgres  | xxxxxxx | UTF8     | C       | C     | 
 template0 | xxxxxxx | UTF8     | C       | C     | =c/xxxxxxx         +
           |         |          |         |       | xxxxxxx=CTc/xxxxxxx
 template1 | xxxxxxx | UTF8     | C       | C     | =c/xxxxxxx         +
           |         |          |         |       | xxxxxxx=CTc/xxxxxxx

heroku -config

CLEARDB_DATABASE_URL:     postgres://b8e:63c@YYYYY.cleardb.net/heroku_fca48d31?reconnect=true
DATABASE_URL:             postgres://b8e:63c@YYYYY.cleardb.net/heroku_fca48d31?reconnect=true
DB_HOSTNAME:              us-01.cleardb.net
DB_NAME:                  heroku_fca
DB_PASSWORD:              63c
DB_PORT:                  3306
DB_USERNAME:              b8ed
LANG:                     en_US.UTF-8
RACK_ENV:                 production
RAILS_ENV:                production
RAILS_LOG_TO_STDOUT:      enabled
RAILS_SERVE_STATIC_FILES: enabled
SECRET_KEY_BASE:          ~~~~
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • hoshi-takanori

    2020/07/01 07:20

    heroku -config の内容がちゃんと PostgreSQL 用になってない気がしますね。
    また、psql コマンドで接続してるのはどこの PostgreSQL ですか?

    キャンセル

  • Eita

    2020/07/01 09:11 編集

    コメントありがとうございます!
    そうなんですね。。。
    意味もわからずpsqlコマンドを打っていたのですが、
    頂いたコメントをヒントにpsqlコマンドを打ったところ以下のようになりました。

    `psql -h localhost -p 5432 -d postgres`
    psql (12.3)
    Type "help" for help.

    postgres=#

    キャンセル

  • hoshi-takanori

    2020/07/01 09:37

    それはご自分のパソコンでローカルに PostgreSQL を動かして、そこに接続してるってことになります。
    開発中はローカルの PostgreSQL で動作確認して、動いたら heroku で動かすことになるでしょうね。
    また、DATABASE_URL に cleardb.net とありますが、これは MySQL 用のホスト名で、PostgreSQL の場合は amazonaws.com になるはず。ってか、もしかして DATABASE_URL を自分で設定してませんか? heroku 側で設定してくれる (そしてたまに勝手に変更される) ものですけど…。

    キャンセル

  • Eita

    2020/07/01 12:44

    そうなんですね。
    勉強不足でした。
    今はローカルをsqlite3、本番環境をpostgresqlに設定しています。

    ご指摘の通りDATABASE_URLは自分で設定しました。。。
    mysql://〜という風になっていたからです。
    〜amazonaws.comといえば、heroku config内に以下の記述があるのですが、何かヒントになりうるでしょうか?

    HEROKU_POSTGRESQL_BROWN_URL: postgres://sfnijlmvbk:b8cf3@ec1-11-111-111-84.compute-1.amazonaws.com:5432/

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 89.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る