위치 BLOB 유형의 테이블 열에 공간 인덱스를 추가하려고합니다. 나는이 시도하는 경우 :MySql BLOB 열에서 공간 인덱스를 만드는 중 오류가 발생했습니다.
ALTER TABLE route ADD SPATIAL INDEX(Location);
를 내가 얻을 :
Error: BLOB/TEXT column 'Location' used in key specification without a key length
그러나 공간 인덱스를 참조 할 때 official docs for MySql 5.1 (내가 사용하고있는 버전)에서, 그것은 분명히 말한다
:"In MySQL 5.1, column prefix lengths are prohibited. The full width of each column is indexed."
이것은 접두사를 제공 할 필요가 없다고 분명히 말합니다.
ALTER TABLE route ADD SPATIAL INDEX(Location(256));
내가 얻을 : 나는이 같은 어쨌든 접두사를 추가하는 시도
그래서Error: Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys
도대체 무슨 일이 일어나고 있는지? 정보를 들어, 내가 MySQL을 5.1.37 커뮤니티를 사용하고, 내 테이블의 MyISAM이며,이 CREATE 문이다 : 나는 또한 위치 NULL NOT 만드는 시도
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,이 차이를하지 않았다.
MySql은 Well-Known Binary (WKB) 형식의 기하 구조 열 (http://dev.mysql.com/doc/refman/5.1/en/gis-wkb-format.html)에 BLOB를 사용하는 것을 지원하지만, 그것은 당신이 공간 인덱스를 가질 수없는 것 같습니다. 트릭은 유창한 NHibernate이 일을하고, 나는 SQL 형식을 강제로했다. CustomSqlTypeIs ("기하학"). 감사합니다! –