【发布时间】:2010-11-19 22:58:34
【问题描述】:
我正在尝试向名为 Location 的 BLOB 类型的表列添加空间索引。如果我试试这个:
ALTER TABLE route ADD SPATIAL INDEX(Location);
我明白了:
错误:BLOB/TEXT 列“位置” 在没有使用的关键规范中 密钥长度
但是在official docs for 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,这没什么区别。
【问题讨论】:
标签: mysql blob myisam mysql-error-1170