MySQL 5.5 создать таблицу с полным текстом и разделом - PullRequest
0 голосов
/ 30 ноября 2011

Я обновляю версию mysql с 5.0 до 5.5. и я новичок в изучении mysql partition. во-первых, я печатаю

ПОКАЗАТЬ ПЕРЕМЕННЫЕ, КАК '% partition%'

Variable_name      Value
have_partitioning   YES

убедитесь, что новая версия поддерживает partition. Я пытался разделить свою таблицу каждые 10 минут, а затем вставлять, обновлять, запрашивать огромные данные в этой таблице для проверки. во-первых, мне нужно создать новую таблицу, я набираю код:

CREATE TABLE test  ( 
`id` int unsigned NOT NULL auto_increment, 
`words` varchar(100) collate utf8_unicode_ci NOT NULL,  
`date` varchar(10) collate utf8_unicode_ci NOT NULL, 
PRIMARY KEY  (`id`),  
FULLTEXT KEY `index` (`words`)
) 
ENGINE=MyISAM  
DEFAULT CHARSET=utf8 
COLLATE=utf8_unicode_ci 
AUTO_INCREMENT=0  
PARTITION BY RANGE (MINUTE(`date`)) 
(
PARTITION p0 VALUES LESS THAN (1322644000),  
PARTITION p1 VALUES LESS THAN (1322644600) , 
PARTITION p2 VALUES LESS THAN (1322641200) ,  
PARTITION p3 VALUES LESS THAN (1322641800) ,  
PARTITION p4 VALUES LESS THAN MAXVALUE
);

Возвращается предупреждение: #1564 - This partition function is not allowed, так в чем же проблема? спасибо.

UPDATE

изменить date в int NOT NULL и PARTITION BY RANGE MINUTE(date) в PARTITION BY RANGE COLUMNS(date)

CREATE TABLE test  ( 
`id` int unsigned NOT NULL auto_increment, 
`words` varchar(100) collate utf8_unicode_ci NOT NULL,  
`date` int NOT NULL, 
PRIMARY KEY  (`id`),  
FULLTEXT KEY `index` (`words`)
) 
ENGINE=MyISAM  
DEFAULT CHARSET=utf8 
COLLATE=utf8_unicode_ci 
AUTO_INCREMENT=0  
PARTITION BY RANGE COLUMNS(`date`) 
(
PARTITION p0 VALUES LESS THAN (1322644000),  
PARTITION p1 VALUES LESS THAN (1322644600) , 
PARTITION p2 VALUES LESS THAN (1322641200) ,  
PARTITION p3 VALUES LESS THAN (1322641800) ,  
PARTITION p4 VALUES LESS THAN MAXVALUE
);

затем вызвал новую ошибку: #1214 - The used table type doesn't support FULLTEXT indexes

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

Мне очень жаль, MySQL не поддерживает полнотекст и разделение одновременно.

См. ограничения разбиения

индексы FULLTEXT. Распределенытаблицы не поддерживают индексы FULLTEXT или поиск.Это включает в себя многораздельные таблицы, использующие механизм хранения MyISAM.

0 голосов
/ 30 ноября 2011
Функция

MINUTE возвращает либо выражение даты / даты / времени. Опять же, ключ разделения должен быть либо целочисленным столбцом, либо выражением, которое разрешается в целое число, но в вашем случае это VARCHAR

0 голосов
/ 30 ноября 2011

Одна проблема может быть

select MINUTE('2008-10-10 56:56:98') возвращает ноль, причина - Minute функция возвращает значение минуты от времени или даты и времени, где, как в вашем случае, дата varchar

...