11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HerokuのDBを操作する方法

Posted at

はじめに

この記事ではHerokuにデプロイしたアプリのDBを、ローカルから参照する方法を解説します。
前提として、PCにHerokuをインストールしていることと、Herokuにアプリをデプロイしている必要があるため、それらの作業がまだ出来ていない人は以下の記事を参考にして設定を終わらせておきましょう。
https://qiita.com/ysda/items/5719c894254aa898aed1

この知識が役立つ場面

・本番環境でのみバグが起こっている
本番環境のDBに入っている何らかのデータが原因という場合もあります。
こういう時に、本番のDBを参照して確認してみましょう。

・卑猥な言葉や差別用語が投稿されてしまった
アプリをデプロイすると誰がどんなデータを作るかわかりません。
ブログアプリを例にすると、いつの間にか卑猥な言葉や差別用語の含まれた記事が作られる可能性があるわけです。そんな物をポートフォリオとして公開する訳にはいきません。
記事の削除機能を作っていなかった場合、削除機能を実装してデプロイして削除...という手間が発生しますが、DBを直接操作する手順を覚えておけば、迅速に不適切なデータの削除を行えます。

PostgreSQLのインストール

まずはheroku上のPostgreSQLのバージョンを確認します。
以下の例ではバージョンが12となっているので、ローカルのPCにバージョン12をインストールします。

% heroku pg -a アプリ名
=== DATABASE_URL
Plan:                  Hobby-dev
Status:                Available
Connections:           0/20
PG Version:            12.2
Created:               2020-04-30 02:57 UTC
Data Size:             8.8 MB
Tables:                6
Rows:                  29/10000 (In compliance)
Fork/Follow:           Unsupported
Rollback:              Unsupported
Continuous Protection: Off
Add-on:                postgresql-convex-63450

以下のリンクからでPostgreSQLをダウンロードし、dmgファイルを開いてインストールしましょう。
https://postgresapp.com/downloads.html
スクリーンショット 2020-05-14 18.13.01.png

これでDBを操作できるようになります!さっそくテーブルの一覧を表示してみましょう。

% heroku pg:psql -c "\d"           

--> Connecting to postgresql-flexible-70379
                     List of relations
 Schema |         Name         |   Type   |     Owner      
--------+----------------------+----------+----------------
 public | ar_internal_metadata | table    | xxeikjppyexwuj
 public | posts                | table    | xxeikjppyexwuj
 public | posts_id_seq         | sequence | xxeikjppyexwuj
 public | schema_migrations    | table    | xxeikjppyexwuj
 public | users                | table    | xxeikjppyexwuj
 public | users_id_seq         | sequence | xxeikjppyexwuj
(6 rows)

SQL文は以下のコマンドで打てるようになります。

% heroku pg:psql -a アプリ名

select文を実行してみましょう。(SQL文の末尾にセミコロンをつけないと実行されないので注意)

アプリ名::DATABASE=> select * from posts;
 id |    title     |          content          |         created_at         |         updated_at         | user_id 
----+--------------+---------------------------+----------------------------+----------------------------+---------
  2 | テストその2 | ourblogのテストその2です | 2020-05-13 15:49:47.069074 | 2020-05-13 15:49:47.069074 |       2
  3 | テスト吉田   | 吉田ユーザーでのテスト    | 2020-05-13 15:50:19.990057 | 2020-05-13 15:50:19.990057 |       1
  4 | あああああ   | おおおおおお              | 2020-05-13 15:50:27.940949 | 2020-05-13 15:50:27.940949 |       1
  1 | テスト編集後 | ourblogのテスト編集後     | 2020-05-13 15:49:30.594094 | 2020-05-13 16:34:25.282793 |       2
(4 rows)

DBの操作を終了してターミナルに戻りたい時はquitで戻れます。

アプリ名::DATABASE=> quit
11
7
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
11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?