news 2026/5/1 10:55:25

MySQL【bug】- spatial key

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL【bug】- spatial key

【bug1】

MySQL建Spatial索引的前提条件是列定义NOT NULL,而当location列中有'GEOMETRYCOLLECTION EMPTY '的值时,这里'GEOMETRYCOLLECTION EMPTY'变相绕过了这个限制,会导致报错。

插入空集合GEOMETRYCOLLECTION EMPTY,空集合占一行空间,语义上“我知道这里该有几何,但当前没有数据”。

与 NULL 的区别

场景

存储值

ST_IsEmpty

ST_AsText

NULL

NULL

NULL

GEOMETRYCOLLECTION EMPTY

1

GEOMETRYCOLLECTION EMPTY

重建表也无法进行修复

CREATE TABLE `spatial_table` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `location` geometry NOT NULL SRID 4326, `number` varchar(20) NOT NULL DEFAULT '7425346', PRIMARY KEY (`id`), UNIQUE KEY `number` (`number`), SPATIAL KEY `location_index` (`location`) ); INSERT INTO spatial_table (id, name, location, number) VALUES (1, 'Place A', ST_GeomFromText('POINT(1 1)', 4326), '7425341'), (2, 'Place B', ST_GeomFromText('LINESTRING(1 1,2 2,3 3)', 4326), '7425342'), (3, 'Place C', ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))', 4326), '7425343'), (4, 'Place D', ST_GeomFromText('MULTIPOINT((0 0),(20 20),(60 60))', 4326), '7425344'), (5, 'Place E', ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10),POINT(30 30),LINESTRING(15 15,20 20))', 4326), '7425345'), (6, 'Place F', ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10),POINT(30 30),LINESTRING(15 15,20 20))', 4326), '7425348'), (7, 'Beijing', ST_GeomFromText('POINT(39.9042 116.4074)', 4326), '7425347'), (8, '<null>', ST_GeomFromText('GEOMETRYCOLLECTION EMPTY', 4326), '7425346'); SELECT id,name,st_astext(location),number From spatial_table;

解决方法:删除这些行并重建表

【bug2】

先对含SPATIAL KEY的表做过ALTER TABLE → R-tree根页指针错乱,后续UPDATE/DELETE走空间索引时找不到记录 → 报Record in index ... not found。在MySQL Server 5.7.498.0.418.4.49.2.0版本中修复。

官方文档:https://bugs.mysql.com/bug.php?id=93728

CREATE TABLE tab ( c1 INT NOT NULL PRIMARY KEY, c2 POINT NOT NULL SRID 4326, c3 LINESTRING NOT NULL SRID 4326, c4 POLYGON NOT NULL SRID 4326, c5 GEOMETRY NOT NULL SRID 4326, SPATIAL KEY idx2 (c2), SPATIAL KEY idx3 (c3), SPATIAL KEY idx4 (c4), SPATIAL KEY idx5 (c5) ) ENGINE = InnoDB; INSERT INTO tab(c1,c2,c3,c4,c5) VALUES (1, ST_GeomFromText('POINT(10 10)', 4326), ST_GeomFromText('LINESTRING(5 5,20 20,30 30)', 4326), ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))', 4326), ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))', 4326)); INSERT INTO tab(c1,c2,c3,c4,c5) VALUES (2, ST_GeomFromText('POINT(20 20)', 4326), ST_GeomFromText('LINESTRING(20 20,30 30,40 40)', 4326), ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))', 4326), ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))', 4326)); ALTER TABLE tab ADD COLUMN new_uniq_col INT NOT NULL AUTO_INCREMENT FIRST, ADD UNIQUE INDEX uniq_idx(new_uniq_col), DROP PRIMARY KEY; DELETE From tab;

解决方法:

  • 升级版本
  • 重建表再重新导入数据

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:07:29

零基础入门UDS 31服务安全访问机制

从“UDS31”到真实安全机制&#xff1a;一文讲透汽车ECU的钥匙门你有没有遇到过这样的场景&#xff1f;在调试一辆新能源车的BMS&#xff08;电池管理系统&#xff09;时&#xff0c;想读取一些加密参数&#xff0c;结果发送2E写数据或22读DID请求&#xff0c;ECU却只回了个7F …

作者头像 李华
网站建设 2026/5/1 8:36:55

零基础掌握AUTOSAR诊断协议栈(UDS over CAN)

零基础吃透AUTOSAR诊断协议栈&#xff1a;从UDS到CAN&#xff0c;拆解整车刷写与故障读取的底层逻辑 你有没有遇到过这样的场景&#xff1f; 产线上的ECU突然无法刷写&#xff0c;诊断仪反复提示“安全访问拒绝”&#xff1b; 售后反馈某车型OBD灯常亮&#xff0c;但用标准工…

作者头像 李华
网站建设 2026/4/29 4:47:36

实战案例:基于车载雷达模块的CANFD与CAN对比

实战案例&#xff1a;车载毫米波雷达通信&#xff0c;为什么CANFD正在取代传统CAN&#xff1f;在一辆智能汽车的“神经系统”中&#xff0c;传感器是感知世界的“眼睛”和“耳朵”&#xff0c;而通信总线就是传递信息的“神经纤维”。当77GHz毫米波雷达每秒输出数百个目标点时&…

作者头像 李华
网站建设 2026/5/1 6:10:51

CUDA 11.0 共享库缺失:环境配置实战案例解析

CUDA 11.0 共享库缺失实战排错&#xff1a;从 ImportError 到 GPU 可用的完整路径 你有没有在深夜调试模型时&#xff0c;刚运行 import torch 就被一条红色报错拦住去路&#xff1f; ImportError: libcudart.so.11.0: cannot open shared object file: No such file or…

作者头像 李华
网站建设 2026/5/1 6:05:59

基于SSM框架的房屋中介公司网站

基于SSM框架的房屋中介公司网站介绍 一、技术架构与核心优势 基于SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架开发的房屋中介网站&#xff0c;采用经典的MVC分层设计模式&#xff0c;具备以下技术优势&#xff1a; 高扩展性 Spring的IoC容器实现模块解耦&#xff0…

作者头像 李华
网站建设 2026/5/1 10:51:07

智能驾驶域中CANFD带宽优化的项目应用

智能驾驶域中CAN FD带宽优化的实战经验&#xff1a;从92%负载到68%的破局之路在当前智能驾驶系统快速迭代的背景下&#xff0c;通信瓶颈正悄然成为制约性能提升的关键“隐性天花板”。我们曾在一个量产级L2智能驾驶项目中遭遇这样的挑战&#xff1a;域控制器集成多路雷达、摄像…

作者头像 李华