CREATE DATABASE

Nombre

CREATE DATABASE  --  Crea una nueva base de datos

Synopsis

CREATE DATABASE name [ WITH LOCATION = 'dbpath' ]
  

Inputs

name

Le nombre de la base de datos a crear.

dbpath

Una ubicación alternativa para almacenar la nueva base de datos en el sistema de archivos. Ver más adelante posibles problemas.

Outputs

CREATE DATABASE

Mensaje devuelto si la orden se completa satisfactoriamente.

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

Ha de tener el prvilegio especial CREATEDB para crear bases de datos. Ver CREAR USUARIO.

ERROR: createdb: database "name" already exists

Esto ocurre si una base de datos llamada name ya existe.

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

La base de datos name y dbpath no puden contener comillas simples. Esto es imprescindible para que los comandos de shell que crean el directorio de la base de datos puedan ejecutarse de modo seguro.

ERROR: The path 'xxx' is invalid.

La expansión del camino especificado dbpath ha fallado (ver más abajo el como). Compruebe la ruta que introdujo o asegurese de que la variable de entorno a la que ha hecho referencia existe.

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

Si tiene una transacción de bloques explicita en ejecución no puede llamar a CREATE DATABASE. Primero ha de terminarse la transacción.

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

Estos mensaje están más bien relacionados con insuficientes permisos sobre el directorio de datos, insuficiente espacio en el disco, u otros problemas en el sistema de ficheros. El usuario bajo el que está corriendo el servidor de base de datos debe tener acceso a la localización especificada.

Description

CREATE DATABASE crea una nueva base de datos PostgreSQL. El creador pasa a ser el propietario de la nueva base de datos.

Puede especificarse una localización alternativa para, por ejemplo, almacenar la base de datos en un disco diferente. La ruta debe haber sido preparada con la orden initlocation.

Si la ruta contiene una barra, la parte delantera se interpreta como una variable de entorno, que debe ser conocida por el proceso servidor. De esta forma el administrador de la base de datos puede ejercer control sobre las localizaciones que pueden ser creadas. (Una elección de usuario puede ser, por ejemplo, 'PGDATA2'.) Si el servidor está compilado con ALLOW_ABSOLUTE_DBPATHS (cosa que no se hace por defecto), se permiten también los nombres de ruta absolutos, identificados por una barra al principio (p. ej. '/usr/local/pgsql/data').

Notas

CREATE DATABASE es una extensión del lenguaje de Postgres.

Use drop_database para eliminar la base de datos.

El programa createdb es un script shell construido alrededor e este comando, y que se incluye por cortesía.

Existen aspectos sobre seguridad e integridad de los datos implicados en el uso de localizaciones alternativas para las bases de datos especificados con nombres de ruta absolutos, y por defecto solo una variable de entorno conocida por el proceso servidor puede ser especificada para una localización alternativa. Vea la Guia del administrador para más información.

Uso

Para crear una nueva base de datos:

olly=> create database lusiadas;
   

para crear una nueva base de datos en un area alternativa ~/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.
(Please type \copyright to see the distribution terms of PostgreSQL.)
 
Type \h for help with SQL commands,
     \? for help on internal slash commands,
     \q to quit,
     \g or terminate with semicolon to execute query.
olly=> CREATE DATABASE elsewhere WITH LOCATION = '/home/olly/private_db';
CREATE DATABASE
   

Compatibilidad

SQL92

No existe el comando CREATE DATABASE en SQL92. El comando equivalente en el SQL estandar es CREATE SCHEMA.