IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Synopsis

CREATE DATABASE nom
    [ [ WITH ] [ OWNER [=] propriétaire ]
               [ TEMPLATE [=] modèle ]
               [ ENCODING [=] codage ]
               [ TABLESPACE [=] tablespace ]
               [ CONNECTION LIMIT [=] limite_connexion ] ]

Description

CREATE DATABASE crée une nouvelle base de données.

Pour créer une base de données, il faut être superutilisateur ou avoir le droit spécial CREATEDB. Voir à ce sujet CREATE USER.

En fonctionnement normal, le créateur devient le propriétaire de la nouvelle base. Les superutilisateurs peuvent créer des bases et en donner la propriété à un autre utilisateur à l'aide de la clause OWNER. Ils peuvent ainsi créer des bases qui appartiennent à des utilisateurs sans droit particulier. Les utilisateurs qui possèdent le privilège CREATEDB mais ne sont pas superutilisateur ne peuvent créer que des bases de données dont ils sont propriétaires.

Par défaut, la nouvelle base de données est créée en clonant la base système standard template1. Un modèle différent peut être utilisé en écrivant TEMPLATE nom . En particulier, la clause TEMPLATE template0 permet de créer une base de données vierge qui ne contient que les objets standards pré-définis dans la version de PostgreSQL™ utilisée. C'est utile pour ne pas copier les objets locaux ajoutés à template1.

Notes

La commande CREATE DATABASE ne peut pas être exécutée à l'intérieur d'un bloc de transactions.

Les erreurs sur la ligne « ne peut initialiser le répertoire de la base de données » (« could not initialize database directory » dans la version originale) sont le plus souvent dues à des droits insuffisants sur le répertoire de données, à un disque plein ou à un autre problème relatif au système de fichiers.

L'instruction DROP DATABASE est utilisée pour supprimer la base de données.

Le programme createdb est un enrobage de cette commande fourni par commodité.

Bien qu'il soit possible de copier une base de données autre que template1 en spécifiant son nom comme modèle, cela n'est pas (encore) prévu comme une fonctionnalité «  COPY DATABASE  » d'usage général. La limitation principale est qu'aucune autre session ne peut être connectée à la base modèle pendant sa copie. CREATE DATABASE échouera s'il y a une autre connexion au moment de son exécution ; sinon, les nouveaux connexions à la base modèle seront verrouillées jusqu'à la fin de la commande CREATE DATABASE . La Section 19.3, « Bases de données modèles » fournit plus d'informations à ce sujet.

L'option CONNECTION LIMIT n'est qu'approximativement contraignante ; si deux nouvelles sessions commencent sensiblement en même temps alors qu'un seul « connecteur » à la base est disponible, il est possible que les deux échouent. De plus, les superutilisateurs ne sont pas soumis à cette limite.