2013-07-04 3 views
2

나는 테이블에서분할 MySQL의 테이블 열

CREATE TABLE `ccd` (
    `Created Month` varchar(255) DEFAULT NULL, 
    `Created` varchar(255) DEFAULT NULL, 
    `Employee Organization Name` varchar(255) DEFAULT NULL, 
    `Employee Login` varchar(255) DEFAULT NULL, 
    `Service Request #` varchar(255) DEFAULT NULL, 
    `Status` varchar(255) DEFAULT NULL, 
    `Description` longtext) 
ENGINE=MyISAM DEFAULT CHARSET=latin1 

PARTITION BY RANGE (SUBSTRING(`Created Month`,1,4) ) 

(PARTITION sp0 VALUES LESS THAN ('2010') ENGINE = MyISAM, 

PARTITION sp1 VALUES LESS THAN ('2012') ENGINE = MyISAM, 

PARTITION sp2 VALUES LESS THAN ('2014') ENGINE = MyISAM 

); 

Created Month 열이 나는거야

Created Month 
2011/02 
2011/06 
2012/02 
2013/01 
2013/02 
2013/05 
2013/05 

같은 값을 갖는 것보다 같은 파티션에 MySQL의에서 테이블을 만들려면 문을 실행하려고하면 오류 메시지가 표시됩니다.

ERROR: This partition function is not allowed 
Error Code: 1564 

사람 말해, 어디서 실수하는거야?

답변

2

SUBSTRING이 그 중 하나임을 알 수 있듯이 데이터 파티션 규칙에 모든 기능을 사용할 수있는 것은 아닙니다.

List of allowed functions

솔루션 : varchar 다음 date과에서

변경 Created Month 사용 :
- PARTITION BY RANGE (MONTH(Created Month) )

+0

감사합니다 귀하의 회신. – CarlJohn

+0

@ CarlJohn : np, 시도해 볼 수있는 솔루션을 게시했습니다. – Stephan