PostgreSQL:ST_GeomFromText(未知)不存在

Jul*_*0sS 6 sql postgresql postgis function geolocation

问题就在这里,

我现在刚刚安装了 PostgreSQL 并尝试构建一个 geoloc 数据库。为此,我安装了 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');
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ERROR : function st_geomfromtext(unknown) does not exist
SQL state : 42883
Character : 51
Run Code Online (Sandbox Code Playgroud)

认为问题来自扩展可能未启用,但看起来没问题,函数列表在数据库模型信息中可见......

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

..."Geo".ST_GeomFromText('...')...
Run Code Online (Sandbox Code Playgroud)

另一个奇怪的事情是,当我尝试这个命令时:

SELECT "Geo".ST_GeomFromText('POINT(42.222 32.555)')
Run Code Online (Sandbox Code Playgroud)

有用...

这是一个屏幕截图:

在此输入图像描述

我是 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';
Run Code Online (Sandbox Code Playgroud)

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

[编辑2]

这个功能似乎有效:

SELECT "Geo".ST_GeomFromText('POINT(42.222 35.555)')
Run Code Online (Sandbox Code Playgroud)

它返回

    st_geomfromtext "Geo".geometry
1 : "010100000023DBF97E6A1C4540D7A3703D0AC74140"
Run Code Online (Sandbox Code Playgroud)

创建语句:

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;
Run Code Online (Sandbox Code Playgroud)

mli*_*nth 3

Point不是 PostGIS 类型,它是原生 Postgresql 类型。

我认为你需要制作点列类型几何图形,然后 PostGIS 功能才能工作。