我有这个(非工作)查询:
"INSERT INTO notes (
lat,
lng,
point)
VALUES (
:lat,
:lng,
ST_GeometryFromText('POINT(:lat :lng)'))"
我正在反对这张桌子:
CREATE TABLE notes
(
id serial NOT NULL,
lat real NOT NULL,
lng real NOT NULL,
point point NOT NULL,
CONSTRAINT notes_pkey PRIMARY KEY (id )
)
查询是用PDO(php)编写的,但这不是我想的。我得到的结果是一个例外,声称:
SQLSTATE[42804]: Datatype mismatch: 7 ERROR: column "point" is of type point but expression is of type geometry
LINE 8: $8, $9, $10, $11, $12, ST_GeometryFromText('POINT(:...
^
HINT: You will need to rewrite or cast the expression.
如何根据建议投射表达式?
答案 0 :(得分:1)
看起来您使用的是标准Postgres类型point
:
"INSERT INTO notes (lat, lng, point)
VALUES (:lat, :lng, '(:lat, :lng)'::point)"
您可能希望在表格中使用PostGis类型geometry
。
答案 1 :(得分:0)
目前尚不清楚是否要使用PostgreSQL的point
类型或PostGIS的geometry
类型。如果是后者,this answer should help out。