PostGIS的错误:无法选择最佳候选函数(PostGIS Error: Could not cho

2019-10-17 22:27发布

在创建视图时,我得到的错误function populate_geometry_columns(unknown) is not unique 。 一本书,我读用这个,但它给我的错误。 什么可能出了错我吗?

查询:

CREATE OR REPLACE VIEW ch03.vw_paris_points AS
SELECT gid, osm_id, ar_num, geom,
tags->'name' As place_name,
tags->'tourism' As tourist_attraction
FROM ch03.paris_hetero
WHERE ST_GeometryType(geom) = 'ST_Point';

SELECT populate_geometry_columns('ch03.vw_paris_points');

错误:

ERROR:  function populate_geometry_columns(unknown) is not unique
LINE 1: SELECT populate_geometry_columns('ch03.vw_paris_points');
               ^
HINT:  Could not choose a best candidate function. You might need to add explicit type casts.

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

ERROR: function populate_geometry_columns(unknown) is not unique
SQL state: 42725
Hint: Could not choose a best candidate function. You might need to add explicit type casts.
Character: 8

Answer 1:

从精细的手工 :

概要

 text Populate_Geometry_Columns(boolean use_typmod=true); int Populate_Geometry_Columns(oid relation_oid, boolean use_typmod=true); 

因此,有两种可能的populate_geometry_columns ,可以使用一个参数调用的函数,并且都没有文本参数。 该错误信息是告诉你,PostgreSQL不知道是不是应该您的隐式转换'ch03.vw_paris_points'字符串到booleanoid 。 我的大脑会暗示你想要的oid版本:

SELECT populate_geometry_columns('ch03.vw_paris_points'::regclass);
-- add an explicit cast -------------------------------^^^^^^^^^^

但PostgreSQL的软件大脑只看到一个字符串,就会犯糊涂。 也许唯一的参数表格populate_geometry_columns比你正在阅读的书新。



Answer 2:

PostgreSQL允许函数重载 。 不止一个函数可以具有相同的名称。 所不同的是在参数。

该手册详细PostgreSQL的大脑是如何试图决定,当它像你这样的错误消息放弃。 @mu已经提供的信息对于这种情况。



文章来源: PostGIS Error: Could not choose a best candidate function