【发布时间】:2014-01-05 04:30:29
【问题描述】:
我在 postgres 中有一个将数据插入表的函数,其中一列的类型为 point。
我不知道如何将获取的数据保存为可接受的形式,以便函数保存我的数据。
有问题的代码是:
CREATE OR REPLACE FUNCTION db."setMessage"(eml text, msg text, lat text, lng text)
...
INSERT INTO
db.messages
VALUES
(DEFAULT,
id,
$2,
DEFAULT,
ST_SetSRID(ST_MakePoint($3::float, $4::float), 4326)
);
我调用函数时收到的错误是:
ERROR: function st_makepoint(double precision, double precision) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Context: PL/pgSQL function "setMessage" line 9 at SQL statement
我尝试将点保存为字符串格式 ('POINT(12.22343 64.22233)'),尝试不强制转换 st_makepoint 参数,并在没有外部函数的情况下插入 (ST_SetSRID)。
谁能告诉我我做错了什么?
解决方案:
所以成功的方法就是按照这个link来获取需要的库。之后我创建了所需的扩展,现在我可以访问所需的功能了。
【问题讨论】:
-
好像没有安装 PostGIS。
\df ST_MakePoint的输出是什么? -
yer 输出为 0 行。我在哪里安装 PostGIS?
-
我试过
apt-get install postgis,但它返回了一些字体包(dejavu)
标签: postgresql postgis