0

What is incorrect in the following query?

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;

Error: The partition function returns the wrong type. 1491. This table using for save users geo-location data

4

1 回答 1

3

您需要将整数传递给HASH函数。但在你的情况下user_id是 type VARCHAR

18.2.3. 哈希分区

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

于 2013-03-24T08:52:29.803 回答