2

我在我的 jboss 5.1-java-jpa-hibernate-postgresql 应用程序中运行一个选择查询。这个查询是 arroung 10 个查询的 UNION 查询,通常现在它应该返回大约 25.000 个 BigInteger 数字(以后会更多)。昨天这个功能运行良好。今天我收到以下错误。有人可以请教吗?我找不到太多关于这个错误的信息。

ERROR: stack depth limit exceeded Hint: Increase the configuration parameter "max_stack_depth", after ensuring the platform's stack depth limit is adequate.

如果我一个接一个地运行 10 个查询,然后将结果添加到一个 ArrayList 中会有帮助吗?


编辑:

使用的PostgreSQL版本:postgresql-9.0-801.jdbc4.jar

出于安全原因,我无法显示确切的查询。但它是这样的:

SELECT * FROM (
    SELECT fileId FROM table1
    UNION
    SELECT fileId FROM table2
    ...
    ...
    SELECT fileId FROM table_n
);

此查询现在返回大约 25.000 个 BigInteger 条目(将来将达到 120.000 个)。有什么建议么?

4

1 回答 1

1

问题解决了。这是由发送到 postgresql 的非常大的查询引起的。

动态创建查询的代码中有一个错误,而不是一个联合查询中的 10 个查询,它复制了它们并在一个联合查询中拥有数百个相同的查询系列。所有这些都导致数据库中的大量查询,从而导致数据库中的事务超时。

我更改了代码以自行执行每个查询并使用代码合并结果。当然,我修复了这个错误,它只生成了 10 个正确的查询。

谢谢大家的帮助。

于 2013-03-26T13:51:42.807 回答