1

当我执行以下查询时;

SELECT Assign_vertex_id('ways', 0.00001, 'the_geom', 'gid')

我收到以下错误;

NOTICE:  CREATE TABLE will create implicit sequence "vertices_tmp_id_seq" for serial column "vertices_tmp.id"
    CONTEXT:  SQL statement "CREATE TABLE vertices_tmp (id serial)"
    PL/pgSQL function "assign_vertex_id" line 15 at EXECUTE statement
    ERROR:  query string argument of EXECUTE is null
    CONTEXT:  PL/pgSQL function "assign_vertex_id" line 32 at EXECUTE statement

    ********** Error **********

    ERROR: query string argument of EXECUTE is null
    SQL state: 22004
    Context: PL/pgSQL function "assign_vertex_id" line 32 at EXECUTE statement

知道为什么会这样吗?

4

2 回答 2

1

我知道这是一篇旧帖子,但我想提供一个答案,也许它会对某人有所帮助。

我找到了这篇文章,它解决了我的问题。

更新:

所以我在这里复制文章中的相关信息:

以下代码的第一行是错误的:

FOR _r IN EXECUTE 'SELECT srid FROM geometry_columns WHERE f_table_name='''|| quote_ident(geom_table)||''';' LOOP
srid := _r.srid;
    END LOOP;

并应修改为:

FOR _r IN EXECUTE 'SELECT srid FROM geometry_columns WHERE f_table_name='''|| geom_table||''';' LOOP
srid := _r.srid;
    END LOOP;

这是因为“quote_ident(tablename)”是错误的,它在表名周围添加了一个额外的''。

于 2013-01-10T11:51:04.740 回答
0

也许你应该尝试:

SELECT assign_vertex_id("ways", 0.00001, "the_geom", "gid");

全球青年基金会

于 2012-09-08T18:26:51.040 回答