CREATE TABLE `tushumulu` (
  `id` int(11) NOT NULL,      //想设置为自动增涨的
  `isbn` int(11) NOT NULL,         //这个字段值会重复的
  `juan` varchar(30) NOT NULL,     //这个字段值会重复的
  `zhangjie` varchar(60) NOT NULL, //这个字段值会重复的
  `yeshu` varchar(100) NOT NULL, //这个字段值会重复的
  `contents` varchar(200) NOT NULL, //这个字段值会重复的
  `zishu` int(5) NOT NULL,
  `gengxinshijian` datetime NOT NULL //这个不会
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY RANGE (isbn)
(PARTITION p0 VALUES LESS THAN (1100) ENGINE = InnoDB,
 PARTITION p1 VALUES LESS THAN (1200) ENGINE = InnoDB,
 PARTITION p2 VALUES LESS THAN (1300) ENGINE = InnoDB,
 PARTITION p3 VALUES LESS THAN (1400) ENGINE = InnoDB,
 PARTITION p4 VALUES LESS THAN (1500) ENGINE = InnoDB,
 PARTITION p5 VALUES LESS THAN (1600) ENGINE = InnoDB,
 PARTITION p6 VALUES LESS THAN (1700) ENGINE = InnoDB,
 PARTITION p7 VALUES LESS THAN (1800) ENGINE = InnoDB,
 PARTITION p8 VALUES LESS THAN (1900) ENGINE = InnoDB,
 PARTITION p9 VALUES LESS THAN (2000) ENGINE = InnoDB
 )我想把 id 字段设置为 自动增加的  可是会报错. 要怎么解决呢?
#1503 - A PRIMARY KEY must include all columns in the table's partitioning function.

解决方案 »

  1.   

    重复考虑了一下你的表设计,个人觉得,你的这个ID字段的作用似乎没有意义你的ISBN已经是主键了,为什么还要这个ID?
      

  2.   

    改为如下即可
    mysql> CREATE TABLE `tushumulu` (
        ->   `isbn` int(11) NOT NULL primary key,
        ->   `juan` varchar(30) NOT NULL,
        ->   `zhangjie` varchar(60) NOT NULL,
        ->   `yeshu` varchar(100) NOT NULL,
        ->   `contents` varchar(200) NOT NULL,
        ->   `zishu` int(5) NOT NULL,
        ->   `gengxinshijian` datetime NOT NULL
        -> ) ENGINE=InnoDB
        -> PARTITION BY RANGE (isbn)
        -> (PARTITION p0 VALUES LESS THAN (1100) ENGINE = InnoDB,
        ->  PARTITION p1 VALUES LESS THAN (1200) ENGINE = InnoDB,
        ->  PARTITION p2 VALUES LESS THAN (1300) ENGINE = InnoDB,
        ->  PARTITION p3 VALUES LESS THAN (1400) ENGINE = InnoDB,
        ->  PARTITION p4 VALUES LESS THAN (1500) ENGINE = InnoDB,
        ->  PARTITION p5 VALUES LESS THAN (1600) ENGINE = InnoDB,
        ->  PARTITION p6 VALUES LESS THAN (1700) ENGINE = InnoDB,
        ->  PARTITION p7 VALUES LESS THAN (1800) ENGINE = InnoDB,
        ->  PARTITION p8 VALUES LESS THAN (1900) ENGINE = InnoDB,
        ->  PARTITION p9 VALUES LESS THAN (2000) ENGINE = InnoDB
        ->  );
    Query OK, 0 rows affected (1.25 sec)mysql>
      

  3.   


    isbn 不能设计成主键 . 最多也只是个外键.  
      

  4.   


    在MYSQL的分区里,主键字段必须和分区字段组成复合主键才行。
    你想把ID设置成自动增加的,而自动增加的字段MYSQL默认就是主键字段,所以你设置失败。
      

  5.   

    PARTITION BY RANGE (id,isbn)