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.
`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.
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>
isbn 不能设计成主键 . 最多也只是个外键.
在MYSQL的分区里,主键字段必须和分区字段组成复合主键才行。
你想把ID设置成自动增加的,而自动增加的字段MYSQL默认就是主键字段,所以你设置失败。