Postgresqlはスーパーユーザーとして「createdb」を使用してdbを作成しませんが、エラーを出力しません[重複]


100

私は 'postgres'スーパーユーザーで、新しいpostgresqlインストールで作業しています。経由でログイン:

sudo -u postgres psql


postgres=# createdb database
postgres-# \list
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | 
 template0 | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
 template1 | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres

エラーはありませんが、テーブルは作成されていません。何か案は?


回答:


207

createdbは、psqlではなくbashから実行できるコマンドラインユーティリティです。psqlからデータベースを作成するには、次のcreate databaseようなステートメントを使用します。

create database [databasename];

注:必ずSQLステートメントを終了してください ;


35
おかげで、私は今自分自身を平手打ちします。:)
Damien Roche

承知しました。簡単なポイント;)(どうやら)まだ7分待つ必要があります。再度、感謝します。
Damien Roche

35
...最後にセミコロンを追加することを忘れないでください;
ティモシー・ダルトン

4
勝利のためのセミコロン!
Michael Dimmitt

1
ありがとうございました!セミセミコロンが私のために仕事をしてくれました。その小さなまだ人生を変える;)
SASを

75

パーティーに遅れますが、受け入れられた回答はエラーが表示されない理由を説明していません。そして、これはPostgresの初心者がよく遭遇するものなので、私はそれを追加したかった。


TL / TR:SQLステートメントは常に次で終了します ;


createdb database終わっていなかったので、; psqlステートメントは終了していないと考え、さらに入力を待ちます。これは、プロンプトがからpostgres=#に変わることで示されますpostgres-#。私が希望する非常に微妙な変更psqlは別の方法で(もっと「目立つ」ように)したいと思います。

メタコマンドを入力\listすると、「現在の」SQLステートメントは実行されずに「中止」されます。

createdb終了した場合;、出力は次のようになります。

postgres => createdb foobar;
エラー:「createdb」またはその近くの構文エラー
1行目:createdb foobar;
        ^
postgres =>

明らかに何かがおかしいことを示しています。


3
うわー、これは確かに微妙ですが致命的です。私はかなり長い間この問題を抱えていました。セミコロンを使用してコマンドを初めて実行すると、createdbが無効であるためエラーが発生します。しかし、セミコロンcreate databasecreatedb一緒にではなく、まったく同じコマンドを繰り返すと、完全に機能します。
Glen Selle 2016年

1
@Helsing:それは私が書いたものです、私はそれが無効であるにもかかわらずエラーメッセージがなかった理由を説明しました
a_horse_with_no_name

@a_horse_with_no_nameええ、私はあなたの目的を誤解しました。あなたの回答にも賛成しました。
2018

3

私は少し前にこの状況にありました。他の誰かがこれを経験した場合、コマンドプロンプトにpostgres-#、入力;とリターンキーを押すだけで保留中のcreatedbコマンドを実行できることが示されていることを考慮してください。



0

ノードターミナルを使用して、私は実行する必要がありました:

psql -U postgres 

[パスワードを入力してください]

その後...

CREATE DATABASE dbadmin;

混乱しているのは、以前に同じコマンドを入力したのに機能しなかったことです。ログアウトして再度ログインした後にのみ、ドキュメントから次の標準コマンドを使用できました:https : //www.postgresql.org/docs/10/tutorial-createdb.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.