1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

heroku run rails db:migrateでdbに接続ができないエラーが出た。

Last updated at Posted at 2024-09-24

自分用備忘録です。初心者なので、間違っていることや、理解が違っていることがありましたら、教えていただけると幸いです。

問題

deviseでメール認証機能をつけたアプリをherokuにデプロイしようとした際、dbが見つからないというエラーが出た。

解決方法

database.ymlファイルのproductionに
url: <%= ENV['DATABASE_URL'] %> を追加する。

[解決までの過程(記録用)]

deviseで管理者機能をつけたアプリをherokuにデプロイ。

% git push heroku master

HerokuのダッシュボードのResourcesからadd on設定
postgresqlを選択

データベースの設定が完了したので、

% heroku run rails db:migrate

下記のエラーが発生しました。

Running rails db:migrate on  hidden-journey-83088... up, run.8327
rails aborted!
ActiveRecord::ConnectionNotEstablished: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory (ActiveRecord::ConnectionNotEstablished)
       Is the server running locally and accepting connections on that socket?

以前にも見たことあるPGSQL.5432" failed:エラーをみつけたので、dbが見つからないというエラーであることがわかった。デプロイは成功しているので、herokuで設定したdbとうまく接続ができていないのだと推測。

railsガイドを見てみると
Railsガイド

スクリーンショット 2024-09-24 22.02.13.png

herokuDevcenter
スクリーンショット 2024-09-24 21.21.40.png

database.ymlのproductionに

url: <%= ENV['DATABASE_URL'] %>

を記述した。これは、Heroku環境でアプリがHerokuのPostgreSQLデータベースに接続できるようにするための設定です。

url: <%= ENV['DATABASE_URL'] %>は、Herokuでデータベース接続情報(URL)が環境変数DATABASE_URLとして提供されているため、その環境変数を使用して接続設定を行います。
Herokuでは、環境変数としてデータベースのURLが自動的に設定されているため、database.ymlのproduction環境でDATABASE_URLを使用することで、HerokuのPostgreSQLに接続できます。

再度変更したアプリをデプロイして、もう一度試してみる。
(念の為herokuで直接作成したdbを消して新たに作る)

コマンドで新しくDatabaseを作る。

% heroku addons:create heroku-postgresql
% heroku run rails db:migrate

で実行できました!

なぜ設定ができていなかったのか、よくわかりませんが、解決してよかったです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?