postgres 9.6 显示default_tablespace

问题描述 投票:0回答:3

我的 bdd 上有一个表空间

tbs1
但我想知道默认表空间是什么。我的问题是显示默认表空间的命令没有返回任何内容:

postgres=# show default_tablespace ;
 default_tablespace
--------------------

(1 row)

postgres=#

当我尝试显示所有表空间时:

postgres=# \db+
                                                  List of tablespaces
    Name    |  Owner   |                Location                 | Access privileges | Options |   Size   | Description
------------+----------+-----------------------------------------+-------------------+---------+----------+-------------
pg_default | postgres |                                         |                   |         | 326 MB   |
pg_global  | postgres |                                         |                   |         | 1241 kB  |
tbs1    | fdu      | ... |                   |         | 553 MB |
(3 rows)

如果

show default_tablespace
命令没有返回任何内容,这是否意味着默认表空间是
pg_default

谢谢

postgresql postgresql-9.6
3个回答
2
投票

是的,默认情况下

pg_default
是默认表空间。

您可以使用

default_tablespace
参数或更改您连接到的数据库的表空间来更改默认值。

请注意,在 99% 的 PostgreSQL 安装中,您不需要定义表空间。


2
投票

我很难在 PostgreSQL 13 数据库中找到默认表空间。

show default_tablespace
声明没有返回OP所说的任何内容。
pg_class
pg_tables
也不是很有用。

但我确实偶然发现了一个名为

oid2name
的命令行工具,它返回了我需要的内容。

oid2name 的源代码是这里。我修改了其中一个查询,它似乎有效:

SELECT spcname
FROM pg_catalog.pg_database d JOIN pg_catalog.pg_tablespace t 
ON (dattablespace = t.oid) 
where datname = (SELECT current_database())
ORDER BY 2

0
投票

如果您想为您的用户设置特定的表空间,您只需执行此操作(作为 postgres 或其他超级用户)

ALTER USER myuser SET default_tablespace TO mytablespace;

© www.soinside.com 2019 - 2024. All rights reserved.