暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PG search_path 设置

原创 鸿惊九天 2023-02-10
1814
===========创建模式

postgres=# create schema my_schema;

CREATE SCHEMA

postgres=# \dn+

                    List of schemas

   Name    |  Owner   | Access privileges | Description

-----------+----------+-------------------+-------------

 my_schema | postgres |                   |

(1 row)


这时候我们再创建表t1,就可以指定schema。

create table my_schema.t1 ( a int );

此时我们使用\d命令列出所有表。会提示Did not find any relations.原因是search_path中没有设置my_schema。

postgres=# \d

Did not find any relations.

======================将my_schema添加到search_path中,即可显示出来。
postgres=# show search_path;
   search_path
-----------------
 "$user", public

postgres=# set search_path="$user", public,'my_schema';
SET
postgres=# show search_path;
        search_path
----------------------------
 "$user", public, my_schema

postgres=# \d
postgres=# \d
                           关联列表
 架构模式 |          名称           |     类型     |  拥有者
----------+-------------------------+--------------+----------
 my_schema | t                       | 数据表       | postgres


5、什么是search_path?

search_path类似于linux的path环境变量。它是一个模式名列表,当我们不使用数据库对象的限定名时,pg会检查这些模式名。例如,当我们执行select * from mytable; 没有指定模式。此时pg会在search_path中列出的模式中查找这个表。它选择它找到的第一个匹配项。默认是$user,public。

怎么修改search_path?

set search_path = "$user", public, my_schema
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论