PostgreSQL7.0手冊-用戶手冊-19. SQL命令-CREATE DATABASE
2019-09-08 23:33:01
供稿:網友
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.
數據庫 name 和 dbpath 不能包含單引號。這樣要求是為了創建數據庫目錄的 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?。ㄈ笔r沒有)選項,以斜杠開頭為標識的絕對路徑(例如, '/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 語句.數據庫等同于目錄,其創建是由實現決定的.