CREATE DATABASE name [ WITH [ LOCATION = 'dbpath' ] [ TEMPLATE = template ] [ ENCODING = encoding ] ]
作成するデータベースの名前です。
新しいデータベースを格納するためのファイルシステムの 代わりの場所で、文字列リテラルとして指定されます。 もしくはデフォルトの場所を使う場合は DEFAULT です。
新しいデータベースを作成するテンプレートの名前、もしくは デフォルトテンプレート (template1) を使う DEFAULT です。
新しいデータベースで使うためのマルチバイトエンコードメソッド です。文字列リテラル名 (例えば 'SQL_ASCII')、 もしくは整数エンコード番号、もしくはデフォルトエンコーディング を使う DEFAULT です。
コマンドが問題無く実行された場合に返されるメッセージです。
データベースを作成するには特別な CREATEDB 権限を持っていなければ なりません。 CREATE USER を参照して下さい。
これは name で指定されたデータベースが既に存在する場合の エラーです。
データベースの場所 dbpath に単一引用符があってはなりません。これはデータベースディレクトリ を作成する shell コマンドが問題なく実行できるようにするために 要求されるものです。
もし稼働中の明示的なトランザクションブロックが ある場合 CREATE DATABASE は 呼び出せません。まずトランザクションを終了させて下さい。
これらはデータディレクトリに対しての無効な権限、ディスク容量不足、 もしくはその他のファイルシステムの問題に関わる可能性が あります。データベースサーバを走らせているユーザが その場所へのアクセス権限を持たなければなりません。
CREATE DATABASE は新しい Postgres データベースを 作成します。作成者は新しいデータベースの所有者になります。
例えば別のディスクにデータベースを格納したりするために、 代わりの場所を指定することができます。パスは initlocation で用意しなければいけません。
もしパス名がスラッシュを含まない場合、環境変数名として解釈され、 サーバプロセスに知らせなければなりません。この方法でデータベース 管理者はデータベースを作ることが出来る場所を管理することが できます。 (慣習的な選択例は 'PGDATA2'です。) もしサーバが ALLOW_ABSOLUTE_DBPATHS でコンパイルされている場合(デフォルトではそうではありません)、 スラッシュで始まることで識別される絶対パス名(例えば、 '/usr/local/pgsql/data')も許されます。
デフォルトでは、新しいデータベースは標準システムデータベース template1 を複製することによって作成されます。 別のテンプレートは TEMPLATE = name と書くことで 指定できます。特に、TEMPLATE = template0 と書くことで、 使用している Postgres のバージョンによって定義済みの標準オブジェクト のみを持つまっ更なデータベースを作ることができます。これはもし template1 に追加されたローカルインストールオブジェクトのコピーを 避けたいという場合に便利です。
もし使用しているサーバがマルチバイトエンコードサポートでコンパイル されている場合、オプションのエンコードパラメータはデータベース エンコードの選択を可能にします。指定されないと、選択された テンプレートデータベースに使われるエンコードがデフォルトに なります。
オプションのパラメータは上記で示された順番だけでなく、 どのような順番でも書くこともできます。
CREATE DATABASE は Postgres の言語拡張です。
データベースを削除するには DROP DATABASE を使います。
プログラム createdb は便宜上提供される、このコマンドの shell スクリプトラッパーです。
これらは絶対パス名で指定される代わりのデータベースの 場所の使用と関連するセキュリティとデータの完全性の問題があり、 デフォルトではバックエンドに認識される環境変数のみが 代わりの場所として指定できます。更に詳しいことは 管理者用ガイドを見て下さい。
template1 以外のデータベースの名前をテンプレートに指定することによって コピーすることは可能ですが、これは(まだ)一般的な目的の COPY DATABASE 機能として意図されているわけではありません。 特に、ソースデータベースが空回り(データ変更トランザクションが 動いていない状態)していることがこのコピー操作の持続には 欠かせません。CREATE DATABASE は操作の開始において(自分以外の)バックエンド プロセスがソースとなるデータベースに接続していないことを確認しますが、 コピーの進行が行なわれている間変更をできないというような保証はしません。 したがって、テンプレートとして 使われるデータベースは読み込みのみとして扱うことをお勧めします。
それぞれのデータベースに便利な二つのフラグが pg_database の中にあります。 datistemplate と datallowconn です。データベースが CREATE DATABASE のテンプレートとして意図されていることを示すために datistemplate を 設定することができます。もしこのフラグが設定されると、 データベースは CREATEDB 権限を持つどのユーザでも複製できます。 これが設定されていないと、スーパーユーザとデータベースの所有者 のみが複写することができます。もし datallowconn が偽の場合、そのデータベースへの新しい接続が許されません (しかし既存のセッションはフラグを偽にするだけでは中断されません)。 template0 データベースは通常このように 変更を防ぐために識別されています。