Mysql 几何体列和非空列上的空间索引不可能
从mysql文档 几何图形列不应为NULL,但几何图形列不能具有默认值 所以,当我想添加一个空间索引时,问题就来了,空间索引的所有部分都必须不为null,如果我勾选null,我必须输入一个默认值,该值给出了第一个错误 我使用的是mysql 5.7,innodb专栏,下面是我为重现问题所做的工作:Mysql 几何体列和非空列上的空间索引不可能,mysql,indexing,geospatial,mysql-5.7,Mysql,Indexing,Geospatial,Mysql 5.7,从mysql文档 几何图形列不应为NULL,但几何图形列不能具有默认值 所以,当我想添加一个空间索引时,问题就来了,空间索引的所有部分都必须不为null,如果我勾选null,我必须输入一个默认值,该值给出了第一个错误 我使用的是mysql 5.7,innodb专栏,下面是我为重现问题所做的工作: my origin table geotest3: id MEDIUMINT lat DECIMAL lon DECIMAL 我添加了一个geom专栏: alter table geotest3 ad
my origin table geotest3:
id MEDIUMINT
lat DECIMAL
lon DECIMAL
我添加了一个geom专栏:
alter table geotest3 add geom geometry;
接下来,我用lat-lon数据填充该列:
UPDATE geotest3
SET geom = PointFromText(CONCAT('POINT(',geotest3.lon,' ',geotest3.lat,')'));
现在我不能为上面解释的问题在geom列上添加空间索引
我不知道这是一个错误还是我遗漏了什么。你忘了一步(3)。整个程序应为:
更改表GEOMET3添加geom几何图形代码>
更新geotest3
设置geom=PointFromText(CONCAT('POINT(',geotest3.lon',,geotest3.lat',))代码>
我想这是什么问题?不要用聊天来描述你的问题。请阅读,这里是一个学习如何提高你的问题质量和获得更好答案的好地方。thx,这是你的工作方式,但如果你添加第四步,这将不会。。对我来说,如果我在第3步中使列不为NULL,在第4步中添加空间索引,它就不再有效了,不知道为什么。。
ALTER TABLE `geotest3`
CHANGE COLUMN `geom` `geom` GEOMETRY NOT NULL,
ADD SPATIAL INDEX `geom_SPATIAL` (`geom` ASC);