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 |
-H | HTMLモードにする | –html |
テーブルの一覧表示( \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)