【发布时间】:2014-12-14 10:07:46
【问题描述】:
我在 postgresql PATHWAY 中有这两个表,以及我使用 pgr_createTopology 创建的顶点表,称为 PATHWAY_VERTICES_PGR。一切都很好,直到我决定备份数据库以便以后恢复它,现在我已经恢复了它,使用相同的 postgres 9.3.4 x64、postgis 2.1.3 和 pgrouting 2.0 版本,没有任何改变,但事实是我已经恢复它,现在 pgr_dijkstra 停止工作,每次我查询 pgr_dijkstra 时都会收到此错误:
ERRO: Error computing path: Unknown exception caught!
********** Error **********
ERRO: Error computing path: Unknown exception caught!
SQL state: 38001
但是当我搜索错误代码时:
38001 containing_sql_not_permitted
在恢复之前完全没问题的查询示例:
SELECT seq, id1 AS node, id2 AS edge, cost, geom FROM pgr_dijkstra( ' SELECT r.gid as id, r.source, r.target, st_length(r.geom) as cost,r.geom FROM PATHWAY r' ,956358,734134, false, false ) as di JOIN PATHWAY pt ON di.id2 = pt.gid
我已经尝试重新安装 Postgres,再次删除并添加 postgis 和 pgrouting 扩展,但错误仍然存在。如果你们有任何想法,请告诉我,这些 postgresql 错误代码很难破译
【问题讨论】:
-
消息:“错误:计算路径错误:捕获到未知异常!”意味着 C++ 代码中的某些东西爆炸了。这和以前的硬件一样吗?更多或更少的内存? postgresql.conf 文件是否已更改?任何 pgr_dijkstra() 查询都有效吗?你有巨大的节点 ID,这可能是个问题,因为它需要大量的内存。您可以尝试重新编号节点,看看是否可行。
-
与以前相同的硬件,相同的操作系统,32GB 或内存,我还备份了整个数据文件夹以防万一,所以所有 conf 文件都完全相同,最短路径查询我把其他过滤器放到减少内存使用。我将制作几个新的表(edges + vertices_pgr),包含 100k 条记录,以测试这是否是内存问题。还使用另一种可用的最短路径方法 bdDijkstra 和 A* 进行测试
-
请参阅gis.stackexchange.com/questions/112739/… 了解有关此问题的详细技术答案...
标签: sql postgresql postgis pgrouting