这就是问题所在
我刚刚安装了PostgreSQL,并尝试建立一个地理数据库。为此,我安装了PostGIS扩展和PostGIS_Topology。
在我的pgAdmin UI中,我可以看到我的模型,我的模式是"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';
I face error,SQL state : 42804 character 51 ("Geo“带下划线)删除"Geo”会导致类似于"Function ST_GeomFromText (or ST_POINT) (unknown) not exist“的错误...
EDIT2
此函数似乎起作用了:
SELECT "Geo".ST_GeomFromText('POINT(42.222 35.555)')
它返回
st_geomfromtext "Geo".geometry
1 : "010100000023DBF97E6A1C4540D7A3703D0AC74140"
Create语句:
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;
发布于 2015-02-25 20:42:32
Point不是PostGIS类型,而是原生Postgresql类型。
我认为您需要使您的点列类型几何,然后PostGIS函数将工作。
https://stackoverflow.com/questions/28717373
复制相似问题