我的 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
?
谢谢
是的,默认情况下
pg_default
是默认表空间。
您可以使用
default_tablespace
参数或更改您连接到的数据库的表空间来更改默认值。
请注意,在 99% 的 PostgreSQL 安装中,您不需要定义表空间。
我很难在 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
如果您想为您的用户设置特定的表空间,您只需执行此操作(作为 postgres 或其他超级用户)
ALTER USER myuser SET default_tablespace TO mytablespace;