Python使用Pandas向PostgreSQL上传带Schema的表失败问题排查
问题解答
为什么指定Schema后\dt无法显示表?
这是PostgreSQL的\dt命令默认行为导致的:
- 默认情况下,
\dt仅显示当前**搜索路径(search_path)**包含的Schema中的表。PostgreSQL默认的search_path是"$user", public,你的my_schema不在这个路径里,所以直接执行\dt不会列出该Schema下的表。 - 你用
\dt my_schema.*能看到表,就是因为明确指定了要查看的Schema范围,绕过了默认的搜索路径限制。
如果想让\dt默认显示my_schema里的表,可以临时修改当前会话的搜索路径:
SET search_path TO my_schema, public;
执行后再运行\dt,就能同时看到my_schema和public下的表了。如果想永久修改,需要调整数据库配置或者用户的默认search_path。
该表是否仍属于数据库'db'?
当然属于。PostgreSQL中的Schema是数据库内部的逻辑分组,所有Schema都归属于某个具体的数据库:
- 你是通过连接到
db数据库的URL创建的my_schema和表,整个操作都在db的上下文里完成,所以my_schema.my_table必然属于db数据库。 - 你可以通过查询系统视图来确认:
SELECT table_catalog, table_schema, table_name FROM information_schema.tables WHERE table_name = 'my_table';
返回结果中的table_catalog字段会显示为db,直接证明表所属的数据库。
内容的提问来源于stack exchange,提问作者Ludo
相关产品推荐
相关产品推荐

