Warm tip: This article is reproduced from serverfault.com, please click

sql-PostgreSQL:ST_GeomFromText(未知)不存在

(sql - PostgreSQL: ST_GeomFromText(unknown) does not exist)

发布于 2015-02-25 11:05:50

这是问题所在

我现在刚刚安装了PostgreSQL,并尝试构建geoloc数据库。为此,我安装了PostGIS扩展和PostGIS_Topology。

在我的pgAdmin用户界面中,我可以看到我的模型,我的模式是“ Geo”,并且我可以在下面的函数列表中看到可用的postGis函数(大约有1000个,请参见屏幕截图)

问题是,当我尝试在数据库中插入新记录时,示例:

INSERT INTO "Geo".points(point, lat, lng) VALUES (ST_GeomFromText('POINT(42.555 32.222)'),'42.555','32.222');

我收到此错误:

ERROR : function st_geomfromtext(unknown) does not exist
SQL state : 42883
Character : 51

以为问题可能来自扩展名,但未启用,但似乎没问题,功能列表在db模型信息中可见...

还尝试从数据库名称调用该函数,但不起作用...

..."Geo".ST_GeomFromText('...')...

另一个奇怪的是,当我尝试执行以下命令时:

SELECT "Geo".ST_GeomFromText('POINT(42.222 32.555)')

有用...

这是屏幕截图:

在此处输入图片说明

我是PostgreSQL的新手,所以这也许是一个愚蠢的问题...但是我查看了堆栈和文档,却没有找到与我的问题相匹配的内容...

感谢你的阅读/帮助

[编辑]

在测试完你的解决方案@mlinth之后,我仍然面临着同样的问题...

尝试时

INSERT INTO "Geo".points(point, lat, lng) 
SELECT "Geo".ST_GeomFromText('POINT(32.222 42.555)'),'42.555','32.222';
or
INSERT INTO "Geo".points(point, lat, lng) 
SELECT "Geo".ST_point(32.222,42.555 ),'42.555','32.222';

我遇到错误,SQL状态:42804字符51(带下划线的“ Geo”加了下划线)删除“ Geo”会导致类似“函数ST_GeomFromText(或ST_POINT)(未知)不存在”的错误。

[EDIT2]

此功能似乎有效:

SELECT "Geo".ST_GeomFromText('POINT(42.222 35.555)')

它返回

    st_geomfromtext "Geo".geometry
1 : "010100000023DBF97E6A1C4540D7A3703D0AC74140"

创建语句:

CREATE TABLE "Geo".points
(
  id serial NOT NULL,
  point point NOT NULL,
  lat text,
  lng text,
  CONSTRAINT points_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "Geo".points
  OWNER TO postgres;
Questioner
Julo0sS
Viewed
0
mlinth 2015-02-25 20:42:31

Point不是PostGIS类型,而是本机Postgresql类型。

我认为你需要使点列类型成为几何图形,然后PostGIS函数才能正常工作。