ST_GeomFromGeoJSON 在 codeIgniter 和 Postgresql 中插入行时出错
ST_GeomFromGeoJSON error during insert row in codeIgniter and Postgresql
我在 PostgreSQL 中有以下 table:
在 codeIgniter 中,我试图执行以下 SQL 语句:
INSERT INTO wq3 (name, wkb_geometry)VALUES ('FG - ICAD2 ', ST_GeomFromGeoJSON('{"type":"MultiPolygon","coordinates":[[[[54.4552662,24.2634702],[54.4604161,24.2579927],[54.4809281,24.267148],[54.4937184,24.2770848],[54.5061635,24.284752],[54.5029881,24.297895],[54.5004132,24.30869],[54.4894268,24.3115059],[54.4878819,24.3033709],[54.4542362,24.3025886],[54.4477131,24.3008677],[54.4430783,24.292419],[54.4252255,24.2788061],[54.4269421,24.2712949],[54.4483998,24.2695735],[54.4552662,24.2634702]]]],"crs":{"type":"name","properties":{"name":"EPSG:1"}}}'))
通过使用这个:
$this->db->query($sql);
但我收到以下错误:
A PHP Error was encountered
Severity: Warning
Message: pg_query(): Query failed: ERROR: function st_geomfromgeojson(unknown) does not exist LINE 2: ', ST_GeomFromGeoJSON('{"type":"MultiPolygon","coordinates":... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Filename: postgre/postgre_driver.php
Line Number: 242
当我尝试使用 phppgadmin 执行 SQL 语句时,它工作正常,但我不知道为什么它在 codeIgniter 中无法正常工作。
感谢您的帮助。
您使用的是非常旧的 PostgreSQL 版本,顺便说一下,它已经达到 EOL on November, 2021
。我强烈建议您升级您的系统 - 当前版本为 13!
您发布的几何结构和 table 结构具有 SRS EPSG:1
,我不确定它是否有效。您的代码应该使用有效的 SRS,例如EPSG:4326
:
CREATE TABLE wq3 (name text, wkb_geometry geometry(multipolygon,4326));
INSERT INTO wq3 (name, wkb_geometry)
VALUES ('FG - ICAD2 ', ST_GeomFromGeoJSON('{"type":"MultiPolygon","coordinates":[[[[54.4552662,24.2634702],[54.4604161,24.2579927],[54.4809281,24.267148],[54.4937184,24.2770848],[54.5061635,24.284752],[54.5029881,24.297895],[54.5004132,24.30869],[54.4894268,24.3115059],[54.4878819,24.3033709],[54.4542362,24.3025886],[54.4477131,24.3008677],[54.4430783,24.292419],[54.4252255,24.2788061],[54.4269421,24.2712949],[54.4483998,24.2695735],[54.4552662,24.2634702]]]],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}'));
演示:db<>fiddle
我在 PostgreSQL 中有以下 table:
在 codeIgniter 中,我试图执行以下 SQL 语句:
INSERT INTO wq3 (name, wkb_geometry)VALUES ('FG - ICAD2 ', ST_GeomFromGeoJSON('{"type":"MultiPolygon","coordinates":[[[[54.4552662,24.2634702],[54.4604161,24.2579927],[54.4809281,24.267148],[54.4937184,24.2770848],[54.5061635,24.284752],[54.5029881,24.297895],[54.5004132,24.30869],[54.4894268,24.3115059],[54.4878819,24.3033709],[54.4542362,24.3025886],[54.4477131,24.3008677],[54.4430783,24.292419],[54.4252255,24.2788061],[54.4269421,24.2712949],[54.4483998,24.2695735],[54.4552662,24.2634702]]]],"crs":{"type":"name","properties":{"name":"EPSG:1"}}}'))
通过使用这个:
$this->db->query($sql);
但我收到以下错误:
A PHP Error was encountered
Severity: Warning
Message: pg_query(): Query failed: ERROR: function st_geomfromgeojson(unknown) does not exist LINE 2: ', ST_GeomFromGeoJSON('{"type":"MultiPolygon","coordinates":... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Filename: postgre/postgre_driver.php
Line Number: 242
当我尝试使用 phppgadmin 执行 SQL 语句时,它工作正常,但我不知道为什么它在 codeIgniter 中无法正常工作。
感谢您的帮助。
您使用的是非常旧的 PostgreSQL 版本,顺便说一下,它已经达到 EOL on November, 2021
。我强烈建议您升级您的系统 - 当前版本为 13!
您发布的几何结构和 table 结构具有 SRS EPSG:1
,我不确定它是否有效。您的代码应该使用有效的 SRS,例如EPSG:4326
:
CREATE TABLE wq3 (name text, wkb_geometry geometry(multipolygon,4326));
INSERT INTO wq3 (name, wkb_geometry)
VALUES ('FG - ICAD2 ', ST_GeomFromGeoJSON('{"type":"MultiPolygon","coordinates":[[[[54.4552662,24.2634702],[54.4604161,24.2579927],[54.4809281,24.267148],[54.4937184,24.2770848],[54.5061635,24.284752],[54.5029881,24.297895],[54.5004132,24.30869],[54.4894268,24.3115059],[54.4878819,24.3033709],[54.4542362,24.3025886],[54.4477131,24.3008677],[54.4430783,24.292419],[54.4252255,24.2788061],[54.4269421,24.2712949],[54.4483998,24.2695735],[54.4552662,24.2634702]]]],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}'));
演示:db<>fiddle