alb*_*tor 5 mysql indexing geospatial mysql-5.7
来自 mysql 文档
几何列应为 NOT NULL,但几何列不能具有 DEFAULT 值
因此,当我想添加空间索引时,问题就出现了,空间索引的所有部分都必须不为空,如果我勾选 NULL,我必须输入一个默认值,这给了我第一个错误。
我正在使用 mysql 5.7,innodb 列,这是我重现问题的方法:
my origin table geotest3:
id MEDIUMINT
lat DECIMAL
lon DECIMAL
Run Code Online (Sandbox Code Playgroud)
我添加了一个 geom 列:
alter table geotest3 add geom geometry;
Run Code Online (Sandbox Code Playgroud)
接下来,我用经纬度数据填充该列:
UPDATE geotest3
SET geom = PointFromText(CONCAT('POINT(',geotest3.lon,' ',geotest3.lat,')'));
Run Code Online (Sandbox Code Playgroud)
现在我无法在 geom 列上添加空间索引来解决上述问题。
我不知道这是一个错误还是我错过了一些东西。
你忘记了一步(3.)
整个过程应该是:
创建允许空值的几何列(确定)
alter table geotest3 add geom geometry;
填写您的栏目(好的)
UPDATE geotest3
SET geom = PointFromText(CONCAT('POINT(',geotest3.lon,' ',geotest3.lat,')'));
现在该列不再包含空值,因此您可以使其不为空并添加空间索引(缺少步骤)
ALTER TABLE `geotest3`
CHANGE COLUMN `geom` `geom` GEOMETRY NOT NULL,
ADD SPATIAL INDEX `geom_SPATIAL` (`geom` ASC);
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3441 次 |
| 最近记录: |