我正在使用一个使用(本地)postgres 数据库并将一些信息存储在临时表中的 Windows 应用程序。我想看看临时表,但 pgadmin 和 dbVis 告诉我:ERROR: cannot access temporary tables of other sessions
当尝试查询数据时。我尝试更改架构和表的权限,但这似乎没有帮助,即使我使用与程序本身相同的用户访问数据库(至少在 dbVis 中)。是否有可以在我的数据库中更改的设置允许我对我的数据库中的所有会话进行“root”访问?
我正在使用一个使用(本地)postgres 数据库并将一些信息存储在临时表中的 Windows 应用程序。我想看看临时表,但 pgadmin 和 dbVis 告诉我:ERROR: cannot access temporary tables of other sessions
当尝试查询数据时。我尝试更改架构和表的权限,但这似乎没有帮助,即使我使用与程序本身相同的用户访问数据库(至少在 dbVis 中)。是否有可以在我的数据库中更改的设置允许我对我的数据库中的所有会话进行“root”访问?
在其他会话中无法访问临时表不是权限问题,而是设计的技术限制。PostgreSQL 后端无法访问另一个后端的临时表,因为没有为临时表完成任何允许并发访问的常规内务处理。
在 9.2 中,您将需要使用
UNLOGGED
表格;这可以从其他会话中看到,但保留了临时表的大部分性能优势。最简洁的答案是不”。其他会话中的临时表在设计上是不可见的。如果两个会话具有相同的用户,则没有区别。甚至:
我不知道这是否能帮助你,但你可以试一试。
以下系统目录表查询应该能够列出在数据库中其他会话中创建的所有临时表:
根据 PostgreSQL文档,
Temporary tables exist in a special schema
通常以pg_temp_xxx
. 所以,使用schemaname
.relationname
从上面的查询中,您应该能够查询您的临时表。正如您在此处看到的,临时表是使用模式限定名称引用的。例子:
select * from pg_temp_20.your_temp_table_name