CREATE DATABASE

名称

CREATE DATABASE — 创建新数据库

语法

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
如果声明的数据库 database 已经存在返回的信息.
ERROR: Single quotes are not allowed in database names., ERROR: Single quotes are not allowed in database paths.
数据库 namedbpath 不能包含单引号。这样要求是为了创建数据库目录的 shell 命令能够正确执行。
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 数据库.创建者成为新数据库的管理员.

A
可以声明一个可选的数据库位置,例如,为了在另一块硬盘上存放数据库。该路径必须是事先用 initlocation 准备好了的.

如果路径包含斜杠,那么(斜杠)前面的部分被解释成一个环境变量,该变量必须为服务进程所知。这样数据库管理员可以对能够在那里创建数据库进行控制。(例如,一个用户化的选择是 'PGDATA2'。)如果服务器被编译成带有 ALLOW_ABSOLUTE_DBPATHS (缺省时没有)选项,以斜杠开头为标识的绝对路径(例如, '/usr/local/pgsql/data')同样也允许。

注意

CREATE DATABASE 是 Postgres 语言的扩展.

使用 drop_database 删除一个数据库.

程序 createdb 是这个命令的 shell 脚本的封装,提供来方便使用。

在用绝对路径指定的可选数据库位置时,有一些安全和数据完整性的问题,而且缺省时只有后端识别的环境变量可以声明为可选的路径.参考管理员手册获取更多的信息.

用法

创建一个新的数据库:
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 语句.数据库等同于目录,其创建是由实现决定的.