我有一个应用程序可以读取现有 PostgreSQL 9.1 数据库的结构,将其与“应该是”状态进行比较并相应地更新数据库。在大多数情况下,这很好用。但是,当读取当前数据库结构时,我现在有几个实例死锁。负责的查询读取现有的外键:
SELECT tc.table_schema, tc.table_name, tc.constraint_name, kcu.column_name,
ccu.table_schema, ccu.table_name, ccu.column_name
FROM information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
WHERE constraint_type = 'FOREIGN KEY'
在 pgAdmin 中查看服务器状态表明这是在服务器上运行的唯一活动查询/事务。仍然,查询没有返回。
错误在某种程度上是可重现的:当我找到一个产生错误的数据库时,它每次都会产生错误。但并非所有数据库都会产生错误。这是一个神秘的错误,对于其他尝试或如何解决这个问题,我已经没有选择和想法了。因此,任何输入或想法都将受到高度赞赏!
PS:我的一位同事刚刚报告他使用 PostgreSQL 8.4 产生了同样的错误。