PostgreSQL:ST_GeomFromText(未知)不存在

PostgreSQL: ST_GeomFromText(unknown) does not exist

问题来了,

我刚刚安装了 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');

我收到此错误:

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

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

还尝试从数据库名称调用该函数,但无法正常工作...

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

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

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

有效...

这是截图:

我是 Postgre 的新手SQL 所以也许这是一个愚蠢的问题...但是我查看了堆栈和文档,没有找到任何符合我的问题的东西...

感谢reading/help

[编辑]

在测试你的解决方案@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" 会导致类似 "Function ST_GeomFromText (or ST_POINT) (unknown) does not exist"...

的错误

[EDIT2]

这个功能似乎有效:

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

它returns

    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;

如果您使用 SELECT 而不是 VALUES,是否会出现同样的错误?

[编辑] 请注意您的纬度和经度值。我不知道 st_geomfromtext 函数中的 WKT 参数需要您的坐标,但是 st_point 需要 lon, lat(而不是我认为在您的语句中的 lat,lon)。我已经在示例代码中交换了坐标...

试试这个(假设您已经将 postgis 函数安装到 "Geo" 架构中,从您的屏幕截图来看就是这种情况)。

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

你也可以只是“ST_POINT”而不是 "ST_GeomFromText"

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

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

我认为您需要制作点列类型的几何图形,然后 PostGIS 函数才能工作。