「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
エラーはありませんが、テーブルは作成されていません。何か案は?
createdb
は、psqlではなくbashから実行できるコマンドラインユーティリティです。 psqlからデータベースを作成するには、次のようにcreate database
ステートメントを使用します。
create database [databasename];
注:必ず;
でSQLステートメントを終了してください
パーティーに遅れましたが、受け入れられた答えは、エラーが表示されない理由を説明していません。これはPostgresの新規参入者がよく遭遇するものなので、追加したいと思いました。
TL/TR:SQLステートメントは常に;
で終了します
createdb database
が;
で終わっていなかったため、psql
はステートメントが終了していないと判断し、さらに入力を待ちます。これは、プロンプトがpostgres=#
からpostgres-#
に変わることで示されます。 psql
が望んでいる非常に微妙な変更は、別の方法で(より「顕著な」)行われることを望みます。
メタコマンド\list
を入力すると、「現在の」SQLステートメントは実行されずに「中止」されます。
createdb
が;
で終了した場合、出力は次のようになります。
postgres => createdb foobar; エラー:「createdb」またはその近くの構文エラー LINE 1:createdb foobar; ^ postgres =>
何かが間違っていたことを明確に示す。
私はこの状況に少し前までいました。コマンドプロンプトにpostgres-#
と表示されることを考慮して、他の誰かがこれを経験した場合は、;
とリターンキーを入力するだけで保留中のcreatedbコマンドを実行できます。