首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySql BLOB列上创建空间索引错误

在MySql BLOB列上创建空间索引错误
EN

Stack Overflow用户
提问于 2009-08-15 21:55:16
回答 2查看 3.3K关注 0票数 2

我正在尝试向名为BLOB类型的位置的表列添加一个空间索引。如果我试试这个:

代码语言:javascript
复制
ALTER TABLE route ADD SPATIAL INDEX(Location); 

我得到:

错误: BLOB/TEXT列“位置”在密钥规范中使用,没有键长度

但是在MySql 5.1的官方文档 (我正在使用的版本)中,它在引用空间索引时清楚地指出:

在MySQL 5.1中,禁止列前缀长度。每列的全部宽度都被编入索引。

这肯定说明我不需要提供前缀。我试着添加一个前缀,如下所示:

代码语言:javascript
复制
ALTER TABLE route ADD SPATIAL INDEX(Location(256)); 

我得到了:

错误:前缀键不正确;使用的键部分不是字符串,使用的长度比键长,或者存储引擎不支持唯一的前缀键

到底是怎么回事??对于信息,我使用的是MySQL 5.1.37社区,我的表是MyISAM,这是create语句:

代码语言:javascript
复制
CREATE TABLE `climb`.`route` ( 
`Id` int(11) NOT NULL, 
`Name` varchar(255) NOT NULL, 
`Location` blob, 
PRIMARY KEY (`Id`), 
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

PS我也尝试过使位置不为空,这没有什么不同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-17 12:30:43

应该在GEOMETRY类型上创建空间索引。

代码语言:javascript
复制
CREATE TABLE `route` (
        `Id` int(11) NOT NULL, 
        `Name` varchar(255) NOT NULL, 
        `Location` GEOMETRY NOT NULL,
        PRIMARY KEY (`Id`),
        SPATIAL KEY (`Location`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
票数 1
EN

Stack Overflow用户

发布于 2009-08-16 07:20:25

我认为您试图添加空间索引的列应该声明为null。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1282962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档