Postgresql事务ID未找到。

28

每当我在PostgreSQL中执行查询时,我会收到以下错误信息:

会话中找不到事务ID。

有没有人知道如何解决这个问题?我最近创建了一个新用户,但我无法找到任何文档显示这是一个有效的错误。

额外说明: 通过使用管理员凭据重新连接,我已经成功解决了这个错误。

我使用的是PG Admin V4和Postgres V9.6,这是我执行任何查询时看到的唯一消息,即使是像“SELECT NOW()”这样的基本查询也是如此。

同时,客户端设备(具有AWS Lambda / NodeJS后端的iOS设备)正在接收到以下错误消息:

'message' : {
  'name' : 'error',
  'length' : 114,
  'severity' : 'fatal',
  'code' : '28000',
  'file' : 'miscinit.c',
  'line' : '587',
  'routine' : 'InitializeSessionUserId'
}

你解决了吗? - Brad Chou
1
@BradChou - 我通常通过打开一个新的查询窗口来解决它。这样做有效。至于错误的原因,对我来说仍然是个谜。 - VKarthik
@VKarthik,这对我也有效。谢谢。 - Brad Chou
@VKarthik.. 感谢您的解决方案.. /\ - Pugal
9个回答

30

我假设你已经找到了解决方案,但对于其他发现此贴的人而言,我遇到了同样的问题,我只是关闭了PG Admin 4并重新启动它,问题就得到了解决。


21

对我来说,将连接设置中的“localhost”更改为“127.0.0.1”有所帮助,如这里提到的


20

对于遇到这个问题的任何人,你只需:

1) 重新连接到数据库

2) 打开一个新的查询选项卡(在此运行您的查询)

不客气。


1
你试过关掉再打开吗?唉...这个方法对我有用。 - MikeMurko
有人知道这是为什么会出现,并且为什么重新启动pg admin会有效吗? - Rex Charles

2
创建一个新的“查询编辑器”选项卡,适合我的需求。

2

断开并重新连接数据库解决了我的问题;完全退出/打开PGAdmin 4不是必要的。


1
我遇到了同样的问题:在每个SQL运行之前的几秒钟都没有问题,然后出现了相同的结果“会话中找不到事务ID。”如之前多次描述的那样,重新启动pgadmin解决了这个问题。
我使用的是pgadmin 6.2,根据帖子的内容,这似乎是一个持续存在的问题。也许有人对原因有什么想法?

1
这不是PostgreSQL的错误信息。它必须来自于你正在使用的堆栈中的其他内容 - 客户端驱动程序、ORM等等。
请发布一个更详细的问题,并提供您正在使用的完整堆栈信息。

这是来自于pgAdmin。 - CompanyDroneFromSector7G

0

所以我不知道我的解决方案的确切细节,但是我在以下情况下发现了这个问题:

  • 创建了数据库用户。
  • 为用户分配了角色。
  • 使用了事务。

我仍然不完全确定我是否已经发现了根本问题的解决方案,但如果其他人遇到了相同的情况,它可能有助于进一步排除故障。 如果其中任何一个未被使用,则我从未遇到过该问题。


0
有人找到这个问题的解释吗?我也遇到了“在会话中未找到事务ID”的问题。这是一个运行时间很长(几天)的查询。我在我的数据的10%样本上运行它,并没有出现问题,但现在需要对整个数据集重复这个过程。我重新连接到数据库,查询仍然处于活动状态。一个新的空闲查询出现如下:
SELECT rel.oid, rel.relname AS name,
    (SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid AND tgisinternal = FALSE) AS triggercount,
    (SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid AND tgisinternal = FALSE AND tgenabled = 'O') AS has_enable_triggers,
    (CASE WHEN rel.relkind = 'p' THEN true ELSE false END) AS is_partitioned
FROM pg_class rel
    WHERE rel.relkind IN ('r','s','t','p') AND rel.relnamespace = 2200::oid
    AND NOT rel.relispartition
        ORDER BY rel.relname;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接