分区语法mysql包含错误?

分区语法mysql包含错误?,mysql,syntax,partitioning,Mysql,Syntax,Partitioning,我正在尝试创建下表 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

我正在尝试创建下表

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)
,每个数字对应一个类别。据我所知,我不能按enum进行分区,但我认为这种方法可行吗

我哪里做错了

编辑

错误如下:

#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

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

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),
);

删除最后一个逗号。有两个语法错误。试试这个代码-

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


更多信息请参见-。

运行此操作时出现的错误是什么?编辑并感谢您的帮助:)谢谢您这对我帮助很大:)