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

当我尝试运行该语句时,我收到如下错误消息

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

任何人都告诉我,我在哪里犯了错误..?

4

1 回答 1

2

并非所有函数都允许在数据分区规则中使用,您可以想象SUBSTRING它就是其中之一。

允许的功能列表

解决方案:

Created Month从更改varchardate然后使用:
-PARTITION BY RANGE (MONTH(Created Month) )

于 2013-07-04T13:58:23.353 回答