MySql空间数据库操作
1.前言
最近遇到了一个需求,就是要在mysql数据库中进行框选查询,开始的时候,我的数据库里面存储的是 geojson 字段,并不需要进行空间查询。
【1】.MySQL升级版本(Linux环境) 下载对应版本的mysql,然后覆盖安装。
【2】.MySql版本升级(8.0.19升级到8.0.22) 这里也是覆盖安装
【3】.MySQL GIS功能介绍 这里是关于一些空间函数的解释
2.geojson转为 geomtory
1 | -- 删除现有的虚拟列 |
3.创建索引
使用这个创建索引,会出现:SQL 错误 [1252] [42000]: All parts of a SPATIAL index must be NOT NULL
1 | CREATE INDEX idx_geom_geometry ON hzscreen_record(geom_geometry); |
【解决方案】
(1)添加约束
1 | -- 更新NULL值为有效的JSON |
(2)处理 NULL 值
1 | -- 创建新的虚拟列,处理NULL情况 |
【1】.SQL 错误 [1252] [42000]: All parts of a SPATIAL index must be NOT NULL 出现这个错误是因为要建立空间索引的字段不能为NULL值。改一下表定义,把空间字段值设为NOT NULL即可。 注意,要建立空间索引,表类型必须是MyISAM类型。
【2】.All parts of a SPATIAL index must be NOT NULL Indexed columns must be NOT NULL.
4.创建bbox
根据生成的geomtry,生成四至范围。
