Den*_*alj 1 postgresql postgis
我在 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)
);
Run Code Online (Sandbox Code Playgroud)
我调用函数时收到的错误是:
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
Run Code Online (Sandbox Code Playgroud)
我尝试以字符串格式 ( 'POINT(12.22343 64.22233)')保存该点,尝试不强制转换 st_makepoint 参数,并在没有外部函数 ( ST_SetSRID) 的情况下插入。
谁能告诉我我做错了什么?
解决方案:
所以成功的方法是按照这个链接来获取所需的库。之后我创建了所需的扩展,现在我可以访问所需的功能。
要安装 PostGIS,请按照https://postgis.net/install 上适用于您的操作系统的说明进行操作。
然后,要在您的数据库上启用它,您可以CREATE EXTENSION postgis;从 psql 或 PGAdmin 执行。
| 归档时间: |
|
| 查看次数: |
3091 次 |
| 最近记录: |