2016-10-19 23 views
0

我試圖創建一個自定義的表空間數據庫和表,而是「pg_default」表空間用於表。這裏的例子:如何在PostgeSQL的自定義表空間中創建數據庫和表?

mkdir /data 

chown postgres /data 

CREATE TABLESPACE mytspace OWNER postgres LOCATION '/data'; 

CREATE DATABASE mydb WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = 'ru_RU.utf8' LC_CTYPE = 'ru_RU.utf8' TABLESPACE = mytspace CONNECTION LIMIT = -1; 

CREATE TABLE foo(i int) TABLESPACE mytspace; 

psql的\db命令顯示錶空間中創建在適當的表空間中創建

  List of tablespaces 
    Name | Owner | Location  
------------+----------+--------------- 
mytspace | postgres | /data 
pg_default | postgres | 
pg_global | postgres | 
(3 rows) 

數據庫。這裏的SQL我在pgAdmin的看到:

CREATE DATABASE mydb 
    WITH 
    OWNER = postgres 
    ENCODING = 'UTF8' 
    LC_COLLATE = 'ru_RU.utf8' 
    LC_CTYPE = 'ru_RU.utf8' 
    TABLESPACE = mytspace 
    CONNECTION LIMIT = -1; 

但表中創建「pg_default」表

CREATE TABLE foo 
(
    i integer 
) 
WITH (
    OIDS = FALSE 
) 
TABLESPACE pg_default; 

我應該做的,以創造一個'表 'mytspace' 表空間FOO

+0

請問表顯示在'pg_tables',也許這只是一個錯誤的pgAdmin?你使用的還有哪個精確的Postgres版本?爲了排除顯而易見的問題:您是否已將連接更改爲新數據庫_before_創建表?或者表可能是在沒有默認表空間的默認數據庫中創建的? –

+0

爲避免混淆,對於存儲在數據庫_default_表空間中的表,「pg_tables.tablespace」將爲空。因此,如果您的表格爲空,這聽起來更像是一個pgAdmin錯誤 –

+1

您必須在創建表之前將(\ c)連接到'mydb'。 – klin

回答

0

好像它在pgAdmin的4 v 1.0的錯誤。GUI和SQL源顯示錯誤的表空間創建的表,但正確的表空間中創建的數據庫。pgAdmin的3個v 1.22.1顯示所有這些CORRE的ctly。

相關問題