首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分区语法mysql包含错误吗?

问分区语法mysql包含错误吗?
EN

Stack Overflow用户
提问于 2012-06-12 03:29:14
回答 2查看 2.4K关注 0票数 1

我试图创建下表,

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `hashes` (
    `hash` binary(20) NOT NULL,
    `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
    `category` tinyint(1) unsigned NOT NULL DEFAULT '0',
    `indexed` tinyint(1) unsigned NOT NULL DEFAULT '0',
    `dcma` tinyint(1) unsigned NOT NULL DEFAULT '0',
    PRIMARY KEY (`hash`),
    KEY `category` (`category`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci,
PARTITION BY LIST(`category`)( 
    PARTITION p0 VALUES IN(0), 
    PARTITION p1 VALUES IN(1), 
    PARTITION p2 VALUES IN(2), 
    PARTITION p3 VALUES IN(3),
    PARTITION p4 VALUES IN(4),
    PARTITION p5 VALUES IN(5),
    PARTITION p6 VALUES IN(6),
);

分区用于列category,它是一个tinyint(1),每个数字对应于一个类别。据我所知,我不能用枚举来分割,但我认为这样会有效吗?

我哪里出问题了?

编辑

错误如下,

代码语言:javascript
复制
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PARTITION BY LIST(`category`)( PARTITION p0 VALUES IN(0), PARTITION ' at line 10
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-12 05:29:29

有两个语法错误。试试这个密码-

代码语言:javascript
复制
    CREATE TABLE IF NOT EXISTS `hashes`(
      `hash` BINARY(20) NOT NULL,
      `name` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL,
      `category` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
      `indexed` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
      `dcma` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
--      PRIMARY KEY (`hash`),
      KEY `category` (`category`)
    )
    ENGINE = INNODB
    DEFAULT CHARSET = utf8
    COLLATE = utf8_unicode_ci
    PARTITION BY LIST (`category`) (
      PARTITION p0 VALUES IN (0),
      PARTITION p1 VALUES IN (1),
      PARTITION p2 VALUES IN (2),
      PARTITION p3 VALUES IN (3),
      PARTITION p4 VALUES IN (4),
      PARTITION p5 VALUES IN (5),
      PARTITION p6 VALUES IN (6)
    );

注意,我已经注释掉了主键定义。分区有一些限制,其中之一-在分区表的分区表达式中使用的所有列都必须是表可能具有的每个唯一键的一部分。换句话说,表中的每个唯一键都必须使用表分区表达式中的每一列。

这里有更多信息- 分区键、主键和唯一键。

票数 2
EN

Stack Overflow用户

发布于 2012-06-12 04:05:37

如果这是您代码的确切副本,我认为您有一个额外的逗号。

代码语言:javascript
复制
PARTITION BY LIST(`category`)( 
  PARTITION p0 VALUES IN(0), 
  PARTITION p1 VALUES IN(1), 
  PARTITION p2 VALUES IN(2), 
  PARTITION p3 VALUES IN(3),
  PARTITION p4 VALUES IN(4),
  PARTITION p5 VALUES IN(5),
  PARTITION p6 VALUES IN(6),
);

删除最后一个逗号

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10990194

复制
相关文章

相似问题

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