我正在尝试向名为BLOB类型的位置的表列添加一个空间索引。如果我试试这个:
ALTER TABLE route ADD SPATIAL INDEX(Location); 我得到:
错误: BLOB/TEXT列“位置”在密钥规范中使用,没有键长度
但是在MySql 5.1的官方文档 (我正在使用的版本)中,它在引用空间索引时清楚地指出:
在MySQL 5.1中,禁止列前缀长度。每列的全部宽度都被编入索引。
这肯定说明我不需要提供前缀。我试着添加一个前缀,如下所示:
ALTER TABLE route ADD SPATIAL INDEX(Location(256)); 我得到了:
错误:前缀键不正确;使用的键部分不是字符串,使用的长度比键长,或者存储引擎不支持唯一的前缀键
到底是怎么回事??对于信息,我使用的是MySQL 5.1.37社区,我的表是MyISAM,这是create语句:
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我也尝试过使位置不为空,这没有什么不同。
发布于 2009-08-17 12:30:43
应该在GEOMETRY类型上创建空间索引。
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;发布于 2009-08-16 07:20:25
我认为您试图添加空间索引的列应该声明为null。
https://stackoverflow.com/questions/1282962
复制相似问题