MySQL分区。分区函数返回错误的类型

时间:2013-03-24 08:37:26

标签: mysql hash partitioning

以下查询中有什么不正确?

CREATE TABLE `tbl_user_geolocation` (
            `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'Идентификатор',
            `user_id` VARCHAR(100) NOT NULL COMMENT 'ID пользователя',
            `client_type` VARCHAR(38) NULL DEFAULT NULL COMMENT 'Тип клиента',
            `lat` DECIMAL(28,8) NOT NULL COMMENT 'Широта',
            `lon` DECIMAL(28,8) NOT NULL COMMENT 'Долгота',
            `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Дата создания',
            PRIMARY KEY (`id`, `user_id`)
        )
        PARTITION BY HASH(id+user_id) PARTITIONS 200;

错误:分区函数返回错误的类型。 1491。 此表用于保存用户的地理位置数据

1 个答案:

答案 0 :(得分:3)

您需要将整数传递给HASH函数。但在您的情况下,user_id的类型为VARCHAR

  

<强> 18.2.3. HASH Partitioning

     

要使用HASH分区对表进行分区,有必要   附加到CREATE TABLE语句的PARTITION BY HASH(expr)   子句,其中 expr是一个返回整数的表达式。