创建带分区的MySQL表时出错。
CREATE TABLE employees (
context VARCHAR(25),
id INT
)
PARTITION BY LIST(context) (
PARTITION pNorth VALUES IN('ads','asd')
);它规定:
错误1064 (42000):值必须与第6行“asd”附近的分区函数类型相同
请帮帮我。
发布于 2014-02-06 09:54:31
我认为这里的问题是,您试图在VARCHAR数据类型列上进行分区。对于LIST分区,必须引用INTEGER类型列。来自医生们
在许多方面,MySQL中的列表分区与范围分区类似。与按范围进行分区一样,必须显式定义每个分区。这两种类型的分区的主要区别在于,在列表分区中,每个分区是基于一组值列表中的列值的成员资格而不是在一组相邻的值范围中定义和选择的。这是通过使用分区按列表( expr ),其中expr是一个列值或基于列值的表达式,并返回一个整数值,然后通过一个值IN ( value_list )定义每个分区,其中value_list是一个逗号分隔的整数列表。
误导性的错误,虽然肯定!
编辑
您应该看到的是由LIST COLUMNS进行分区,而不是通过LIST进行分区。因此:
CREATE TABLE employees (
context VARCHAR(25),
id INT
)
PARTITION BY LIST COLUMNS(context) (
PARTITION pNorth VALUES IN('ads','asd')
);发布于 2014-02-07 05:59:43
正如比尔·卡温所指出的。“在MySQL 5.1中,您只能使用整数进行列表分区。在MySQL 5.5中,它们增加了使用其他数据类型处理列表列的功能。”
发布于 2014-02-06 20:28:01
列表分区的文档没有提到COLUMNS作为关键字。
尝试从查询中删除COLUMNS:
CREATE TABLE ...
)
PARTITION BY LIST (context) (
PARTITION pNorth VALUES IN('ads','asd')
)https://stackoverflow.com/questions/21599056
复制相似问题