【发布时间】:2018-09-06 20:24:35
【问题描述】:
在长期使用 pgAdmin 3 之后,我最近开始使用 pgAdmin 4。
我现在遇到的问题是我无法替换引用geometry 对象的现有函数。我在 Windows 10 上,pgAdmin 4 的当前版本是 2.1。
PL/pgSQL 函数已经存在于数据库中,它是使用 flyway、psql 或 pgAdmin 3 创建的,并且可以正常工作。 PostGIS 扩展已启用。
现在我进入pgAdmin 4并使用和以前一样的登录,选择“脚本”->“创建脚本”的功能,然后点击F5-“运行脚本”来创建它。
我得到的是一个错误:
ERROR: type "geometry" does not exist
LINE 22: v_location geometry;
pgAdmin 3 中的相同操作不会出错。
该函数的search_path设置正确,可以在pgAdmin3和psql中创建。
其实我可以在pgadmin4的查询工具中创建一个dummy函数并编译它。见下文:
set search_path=res_cc_01,public;
create or replace function test() returns text
LANGUAGE plpgsql VOLATILE SECURITY DEFINER
COST 100
set search_path=res_cc_01,public
AS
$BODY$
DECLARE
v_g geometry := ST_GeometryFromText('POINT(142.279859 -9.561480)',4326);
begin
return 'xxx'::text;
end;
$BODY$
仅当通过 Scripts->Create Script 然后 F5 ( Execute ) 重新编译时,我得到了错误。 这里有什么问题?
我在网上找不到类似的问题,也找不到手册。但我还没有全部读完。
【问题讨论】:
标签: postgresql geometry postgis pgadmin-4