首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建带有分区语法错误的表: MySQL

问创建带有分区语法错误的表: MySQL
EN

Stack Overflow用户
提问于 2014-02-06 09:42:55
回答 4查看 2.6K关注 0票数 2

创建带分区的MySQL表时出错。

代码语言:javascript
复制
    CREATE TABLE employees (
    context VARCHAR(25),
    id INT
)
PARTITION BY LIST(context) (
    PARTITION pNorth VALUES IN('ads','asd')
);

它规定:

错误1064 (42000):值必须与第6行“asd”附近的分区函数类型相同

请帮帮我。

EN

回答 4

Stack Overflow用户

发布于 2014-02-06 09:54:31

我认为这里的问题是,您试图在VARCHAR数据类型列上进行分区。对于LIST分区,必须引用INTEGER类型列。来自医生们

在许多方面,MySQL中的列表分区与范围分区类似。与按范围进行分区一样,必须显式定义每个分区。这两种类型的分区的主要区别在于,在列表分区中,每个分区是基于一组值列表中的列值的成员资格而不是在一组相邻的值范围中定义和选择的。这是通过使用分区按列表( expr ),其中expr是一个列值或基于列值的表达式,并返回一个整数值,然后通过一个值IN ( value_list )定义每个分区,其中value_list是一个逗号分隔的整数列表。

误导性的错误,虽然肯定!

编辑

您应该看到的是由LIST COLUMNS进行分区,而不是通过LIST进行分区。因此:

代码语言:javascript
复制
CREATE TABLE employees (
    context VARCHAR(25),
    id INT
)
PARTITION BY LIST COLUMNS(context) (
    PARTITION pNorth VALUES IN('ads','asd')
);
票数 3
EN

Stack Overflow用户

发布于 2014-02-07 05:59:43

正如比尔·卡温所指出的。“在MySQL 5.1中,您只能使用整数进行列表分区。在MySQL 5.5中,它们增加了使用其他数据类型处理列表列的功能。”

票数 1
EN

Stack Overflow用户

发布于 2014-02-06 20:28:01

列表分区的文档没有提到COLUMNS作为关键字。

尝试从查询中删除COLUMNS:

代码语言:javascript
复制
CREATE TABLE ...
)
PARTITION BY LIST (context) (
  PARTITION pNorth VALUES IN('ads','asd')
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21599056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档