【Docker】PostgreSQLでDid not find any relations.やtable border=”1と表示されたときの対処法

docker-prograshi(プロぐらし)-kv Database
記事内に広告が含まれていることがあります。

PostgreSQLの対話モードに入った後に、Did not find any relations.や、table border=”1″といったHTMLが表示される場合の対処法。

docker上に起動したPostgreSQLに作成されているデータベースやテーブルの一覧を表示したり、中身を確認したい時に、対話モード postgres=# でコマンドを入力した時に次のように出る場合の対処法について。

DB一覧の表示(\l)でHTMLタグが表示される場合

エラー内容

DB一覧を表示するコマンド、\l を実行すると、次のようなHTMLタグが表示されることがあります。

#docker上のPostgreSQL DBに入る
$ docker exec -it <DBコンテナ名> bash

#対話モードに入る
root@63897bac4d3f:/# psql -H -U postgres
psql (13.0 (Debian 13.0-1.pgdg100+1))
Type "help" for help.

#DB一覧を表示
postgres=# \l
<table border="1">
  <caption>List of databases</caption>
  <tr>
    <th align="center">Name</th>
    <th align="center">Owner</th>
    <th align="center">Encoding</th>
    <th align="center">Collate</th>
    <th align="center">Ctype</th>
    <th align="center">Access privileges</th>
  </tr>
  <tr valign="top">
    <td align="left">postgres</td>
    <td align="left">postgres</td>
    <td align="left">UTF8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">  </td>
  </tr>
  <tr valign="top">
    <td align="left">rails_vue_development</td>
    <td align="left">postgres</td>
    <td align="left">UTF8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">  </td>
  </tr>
  <tr valign="top">
    <td align="left">rails_vue_test</td>
    <td align="left">postgres</td>
    <td align="left">UTF8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">  </td>
  </tr>
  <tr valign="top">
    <td align="left">template0</td>
    <td align="left">postgres</td>
    <td align="left">UTF8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">=c/postgres<br />
postgres=CTc/postgres</td>
  </tr>
  <tr valign="top">
    <td align="left">template1</td>
    <td align="left">postgres</td>
    <td align="left">UTF8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">en_US.utf8</td>
    <td align="left">=c/postgres<br />
postgres=CTc/postgres</td>
  </tr>
</table>
<p>(5 rows)<br />
</p>

対処法

対話モードの入る時の指定方法が間違っています。

NG: psql -H -U postgres
OK: psql -U postgres

正しいログインの結果

root@63897bac4d3f:/# psql -U postgres
psql (13.0 (Debian 13.0-1.pgdg100+1))
Type "help" for help.

postgres=# \l
                                       List of databases
         Name          |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------------------+----------+----------+------------+------------+-----------------------
 postgres              | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 rails_vue_development | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 rails_vue_test        | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0             | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                       |          |          |            |            | postgres=CTc/postgres
 template1             | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                       |          |          |            |            | postgres=CTc/postgres
(5 rows)


psqlのログインオプション

psqlのログインコマンドの基本形

psql -u <オプション> <ユーザー名>

-Hオプションとは?

-Hオプションは、結果をHTML型式で表すものです。host名を表す-hとは異なります。

psqlの主要オプション

基本的に指定するオプションは、-U, -h, -pの3つです。

オプション意味エイリアス
-Uユーザー名を指定–host=hostname と同じ
-h ホストを指定–host=hostname
-pポート番号を指定–port=port
-HHTMLモードにする–html

(参考)PostgreSQL公式 psqlのオプション一覧


テーブルの一覧表示( \dt; )でDid not find any relations.が表示される場合

エラー内容

テーブルの一覧表示 \dt; でDid not find any relations.が表示される場合です。

postgres=# \dt;
Did not find any relations.

これは、データベースが選択されていないために発生します。

コマンドを入力する時に、postgres=# と表示されている場合は\dt; は使えません。テーブルが正しく選択されている場合は、<テーブル名>=# となっています。

  • NG: postgres=#
  • OK: <テーブル名>=#

対処法

\dt; コマンドを実行する前に、データベースを選択する必要があります。

\c <データベース名>

実例

#データベースの一覧を表示
postgres=# \l
                                       List of databases
         Name          |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------------------+----------+----------+------------+------------+-----------------------
 postgres              | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 rails_vue_development | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 rails_vue_test        | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0             | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                       |          |          |            |            | postgres=CTc/postgres
 template1             | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                       |          |          |            |            | postgres=CTc/postgres
(5 rows)


#データベースを選択
postgres=# \c rails_vue_development
You are now connected to database "rails_vue_development" as user "postgres".


#テーブル一覧を表示
rails_vue_development=# \dt;
                 List of relations
 Schema |         Name          | Type  |  Owner
--------+-----------------------+-------+----------
 public | active_admin_comments | table | postgres
 public | ar_internal_metadata  | table | postgres
 public | clients               | table | postgres
 public | schema_migrations     | table | postgres
 public | students              | table | postgres
 public | tests                 | table | postgres
(6 rows)

タイトルとURLをコピーしました