如何在MySQL表中插入数据?

3
我收到一个MySQL错误,指出“ADDRESS_LONGI_LATIT_LOCATION”不能为空。很可能是由于“geomfromtext/pointfromtext”返回了一个空值造成的。这里有什么问题?感谢任何帮助。
INSERT INTO address (ADDRESS_NICKNAME,ADDRESS_LONGI_LATIT_LOCATION) 
VALUES ('Testing',geomfromtext('Point(10.20.45 34.23.79)'))

另一种方法

INSERT INTO address (ADDRESS_NICKNAME,ADDRESS_LONGI_LATIT_LOCATION) 
VALUES ('Testing',pointfromtext('10.20.45 34.23.79'))

请注意您在问题上打的标签,因为人们会订阅它们。如果您没有放置正确的标签,您的问题将获得较少的关注,并且不太可能得到答案。特别是,您应该始终指定您正在使用的技术和框架(就像这里的 mysqlmysql-spatial)。我只是随机遇到了您的问题,因为我很好奇一个“点”问题会是什么样子。 - Didier L
1个回答

3
根据 ST_geomFromText() 规范(geomfromtext() 是一个已弃用的同义词,不应使用):

如果几何参数为 NULL 或不是语法上良好形式的几何图形,或者 SRID 参数为 NULL,则返回值为 NULL。

实际上您的参数不是语法上良好形式的,因为每个坐标都包含两个点。您可以通过简单的方式来检查这一点:
select geomfromtext('Point(10.20.45 34.23.79)')

结果 (在线尝试):

(空)

只需一个点,它就能工作:

select geomfromtext('Point(10.2045 34.2379)')

结果 (在线查看)

AAAAAAEBAAAAYhBYObRoJED129eBcx5BQA==

对于ST_PointFromText()也是同样的情况,只不过您仍然需要使用WKT格式,因此还需要使用POINT()

select pointfromtext('point(10.2045 34.2379)')

结果 (在线尝试):

AAAAAAEBAAAAYhBYObRoJED129eBcx5BQA==

这两个函数基本相同,只是 pointfromtext() 强制返回一个点结果。


非常感谢。我完全没有注意到。现在它正在工作。 - PCG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接