我正在尝试向名为 Location 的 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 TABLE `climb`.`route` (
`Id` int(11) NOT NULL,
`Name` varchar(255) NOT NULL,
`Location` blob,
PRIMARY KEY (`Id`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
PS 我也试过让 Location NOT NULL,这没有什么区别。