partitionmysql:尝试对表进行分区时出现错误代码1679

v9tzhpje  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(347)

我得到了错误
“错误代码1697:分区p0的值必须具有int类型”
我也试过了 FLOOR(0x080000) 产生了同样的错误,我也试过了 INT(0x080000) 产生了语法错误。

CREATE TABLE `mytable`.`tbl_mac` (
`mac` MEDIUMINT(6) UNSIGNED NOT NULL,
`product` TINYINT(1) NULL,
PRIMARY KEY (`mac`)
) 
PARTITION BY RANGE (mac) 
(
PARTITION p0 VALUES LESS THAN (0x080000),
PARTITION p1 VALUES LESS THAN (0x090000), 
PARTITION p2 VALUES LESS THAN (0xFFFFFF)
);

谢谢你的帮助。

bprjcwpo

bprjcwpo1#

根据文件
https://dev.mysql.com/doc/refman/8.0/en/hexadecimal-literals.html
在数字上下文中,mysql将十六进制文本视为bigint(64位整数)。要确保十六进制文字的数字处理,请在数字上下文中使用它。方法包括添加0或使用cast(。。。作为未签名)。例如,默认情况下,分配给用户定义变量的十六进制文字是二进制字符串。要将值指定为数字,请在数字上下文中使用它:
所以,解决方法是使用cast

PARTITION p0 VALUES LESS THAN (CAST(0x080000 AS UNSIGNED))

相关问题