はじめに
データベースを確認する場面はよくあることだと思いますが、私はここら辺をあまりじっくり取り組んだことが少ないことから、どのような手順でたどり着くことができるのか。アウトプットがてら投稿したいと思います。
どういう状況だったのか
- 新規登録機能を作ったがデータベースにちゃんと反映されているのか確認したい
- PostgreSQLを使用している
コンテナ内に入る手順
-
コンテナの確認
まず、現在稼働しているコンテナを確認します。以下のコマンドで、実行中のコンテナのリストを取得します。docker ps
このコマンドで表示されたリストから、PostgreSQL が稼働しているコンテナのコンテナ ID をメモします。
上記画面の場合は、PostgreSQL コンテナの ID は 9c53f5eeaa95 ですので、これを使ってコンテナ内にアクセスし、psql コマンドを使ってデータベースに接続できます。
PostgreSQL コンテナにアクセスする手順
-
PostgreSQL コンテナにアクセス
次のコマンドで PostgreSQL コンテナにアクセスします:
docker exec -it 9c53f5eeaa95 psql -U postgres
これで PostgreSQL のクライアントツールにアクセスできるはずです。
-
データベースに接続
PostgreSQL コンテナ内で
psql
が起動したら、次のコマンドでデータベースに接続します:\c myapp_development
これで
myapp_development
データベースに接続できます。 -
データベースやテーブルの確認
接続したデータベース内で、テーブルやデータの確認を行います。例えば、テーブルの一覧を確認するには次のコマンドを使用します:
\dt
特定のテーブルの構造を確認するには、次のコマンドを使用します:
\d users
これで
users
テーブルの詳細が表示されます。
私の流れは下記のような感じでした
$ docker exec -it 9c53f5eeaa95 psql -U postgres
psql (16.3 (Debian 16.3-1.pgdg120+1))
Type "help" for help.
postgres=# \c myapp_development
You are now connected to database "myapp_development" as user "postgres".
myapp_development=# \d users
Table "public.users"
Column | Type | Collation | Nullable | Default
------------------+--------------------------------+-----------+----------+-----------------------------------
id | bigint | | not null | nextval('users_id_seq'::regclass)
email | character varying | | not null |
crypted_password | character varying | | |
salt | character varying | | |
created_at | timestamp(6) without time zone | | not null |
updated_at | timestamp(6) without time zone | | not null |
name | character varying | | not null |
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
"index_users_on_email" UNIQUE, btree (email)
さいごに
今回はデーターベースの確認についてまとめてみました。どのような構造化を把握するときに、少しでも参考になれば幸いです。