提示:不允许在(子)分区函数中使用常量,随机或时区相关的表达式

时间:2019-02-19 09:03:30

标签: mysql sql partition

我的桌子是这样的:

 CREATE TABLE `test1` (
         `id` int(11) NOT NULL AUTO_INCREMENT,
         `project_id` int(11) NOT NULL,
         `md5` varchar(255) NOT NULL,
         `create_time` datetime NOT NULL,
         `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
         PRIMARY KEY (`id`,`project_id`,`md5`),
         KEY `index_id` (`md5`),
        ) 

我想按md5和project_id进行分区。所以我创建了一个像这样的函数:

    CREATE FUNCTION f2(md5 VARCHAR(255), project_id int(11))
    RETURNS int
    return MOD(md5, 10) + project_id;

当我对该表进行分区时,请使用以下sql:

    alter table test1 partition by HASH(f2(md5, project_id)) PARTITIONS 100;

它显示:

 Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed.

,但是答案不是恒定的,随机的和时区相关的。所以我不知道如何处理身份证,谁可以帮助我?非常感谢。

0 个答案:

没有答案