这是问题所在
我现在刚刚安装了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;
Point不是PostGIS类型,而是本机Postgresql类型。
我认为你需要使点列类型成为几何图形,然后PostGIS函数才能正常工作。
我还有另一个问题,请问您有几分钟要与我联系吗?chat.stackoverflow.com/rooms/71671/postgresql-postgis