Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 几何体列和非空列上的空间索引不可能_Mysql_Indexing_Geospatial_Mysql 5.7 - Fatal编程技术网

Mysql 几何体列和非空列上的空间索引不可能

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

从mysql文档

几何图形列不应为NULL,但几何图形列不能具有默认值

所以,当我想添加一个空间索引时,问题就来了,空间索引的所有部分都必须不为null,如果我勾选null,我必须输入一个默认值,该值给出了第一个错误

我使用的是mysql 5.7,innodb专栏,下面是我为重现问题所做的工作:

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',))

  • 现在该列不再包含null值,因此可以将其设置为非null并添加空间索引(缺少步骤)


  • 我想这是什么问题?不要用聊天来描述你的问题。请阅读,这里是一个学习如何提高你的问题质量和获得更好答案的好地方。thx,这是你的工作方式,但如果你添加第四步,这将不会。。对我来说,如果我在第3步中使列不为NULL,在第4步中添加空间索引,它就不再有效了,不知道为什么。。
    ALTER TABLE `geotest3` 
    CHANGE COLUMN `geom` `geom` GEOMETRY NOT NULL,
    ADD SPATIAL INDEX `geom_SPATIAL` (`geom` ASC);