2013-07-04 137 views
2

我想在MySQL中創建表中包含分區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 

,當我的價值觀分區試圖運行該聲明,我得到的錯誤消息,如

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

任何人告訴我,我犯了什麼錯誤..?

回答

2

並非所有功能都允許在數據分區規則中使用,因爲您可以想象得到SUBSTRING就是其中之一。

List of allowed functions

解決方案:

變化Created Monthvarchardate,然後使用:
- PARTITION BY RANGE (MONTH(Created Month) )

+0

感謝您的答覆。 – CarlJohn

+0

@CarlJohn:np,我也發佈了一個可以嘗試的解決方案 – Stephan