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
請問表顯示在'pg_tables',也許這只是一個錯誤的pgAdmin?你使用的還有哪個精確的Postgres版本?爲了排除顯而易見的問題:您是否已將連接更改爲新數據庫_before_創建表?或者表可能是在沒有默認表空間的默認數據庫中創建的? –
爲避免混淆,對於存儲在數據庫_default_表空間中的表,「pg_tables.tablespace」將爲空。因此,如果您的表格爲空,這聽起來更像是一個pgAdmin錯誤 –
您必須在創建表之前將(\ c)連接到'mydb'。 – klin