CREATE DATABASE

Name

CREATE DATABASE  --  新しいデータベースを作成する。

Synopsis

CREATE DATABASE name [ WITH LOCATION = 'dbpath' ]
  

入力

name

作成するデータベース名。

dbpath

新しいデータベースを格納する、ファイルシステム内の非 標準的な場所。 注意点については後で説明します。

出力

CREATE DATABASE

コマンドの実行に成功した場合に返されるメッセージ。

ERROR: user 'username' is not allowed to create/drop databases

データベースを作成するには特別な CREATEDB 権限が必要です。 CREATE USER を参照して下さい。

ERROR: createdb: database "name" already exists

指定した、 name というデータベースが既に存在していた場合に起こります。

ERROR: Single quotes are not allowed in database names., ERROR: Single quotes are not allowed in database paths.

name データベースと dbpath には単一引用符を含めることはできません。 データベースディレクトリを作成するシェルスクリプトを 安全に実行するために必要とされます。

ERROR: The path 'xxx' is invalid.

指定した dbpath の展開に失敗しました。(この方法については後で説明します。) 入力したパスをチェックし、参照する環境変数が存在するか 確認して下さい。

ERROR: createdb: May not be called in a transaction block.

処理中の明示的なトランザクションブロックがある場合、 CREATE DATABASE を呼び出すことはでき ません。 まずトランザクションを終了させる必要があります。

ERROR: Unable to create database directory 'path'., ERROR: Could not initialize database directory.

これらは大抵、データディレクトリに対する権限が不十分で あること、ディスクに空きがないこと、その他ファイルシス テムにおける問題に関係しています。 データベースサーバを実行しているユーザはその場所にアク セスできなければなりません。

説明

CREATE DATABASE は新しい Postgres データベースを作成します。 作成者はその新しいデータベースの所有者になります。

例えば、異なるディスク上にデータベースを格納するために、 非標準的な場所を指定することができます。 このパスは initlocation を使用してあらかじめ準備しておかなければなりません。

このパスがスラッシュを含む場合、スラッシュより前の部分は環境 変数と解釈されます。この環境変数はサーバプロセスによって認識 されていなければなりません。 こうして、データベース管理者はどの場所にデータベースを作成す るのかについて管理を行なうことができます。(慣習的な選択は、 例えば、'PGDATA2' です。) サーバが ALLOW_ABSOLUTE_DBPATHS 付きでコン パイルされた場合 (デフォルトではこのようになっていません)、先 頭のスラッシュ (例えば、 '/usr/local/pgsql/data') によって識別され る、絶対パス名も同様に使用できます。

注意

CREATE DATABASEPostgres の拡張言語です。

データベースを削除する場合は drop_database を使用して下さい。

createdb プログラムは、簡便性のために用意された、このコマンドを内部 で実行するシェルスクリプトです。

絶対パス名で指定された非標準的なデータベースの場所の使用 にはセキュリティ及びデータ整合性に関する問題がありますの で、デフォルトでは、バックエンドに認知された環境変数のみ が非標準な場所指定に使用できます。 より詳細についてはアドミニストレータガイドを参照して下さい。

使用法

新しいデータベースを作成します。

olly=> create database lusiadas;
   

~/private_db という非標準的な領域に新し いデータベースを作成します。

$ mkdir private_db
$ initlocation ~/private_db
Creating Postgres database system directory /home/olly/private_db/base
   
$ psql olly
Welcome to psql, the PostgreSQL interactive terminal.
 
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

olly=> CREATE DATABASE elsewhere WITH LOCATION = '/home/olly/private_db';
CREATE DATABASE
   

互換性

SQL92

SQL92には CREATE DATABASE 文はありません。 データベースはカタログに相当し、カタログの作成方法は各実装に よって定義されています。