日期:2014-05-16  浏览次数:20870 次

关于mysql分区问题
下面的语句老是报错

SQL code

CREATE TABLE IF NOT EXISTS `users` (
  `uid` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` char(32) NOT NULL,
  `email` varchar(100) NOT NULL,
  `idcard` varchar(18) NOT NULL,
  `usertype` tinyint(1) NOT NULL DEFAULT '0',
  `userface` varchar(20) DEFAULT '0',
  `regdate` int(10) DEFAULT NULL,
  `lasttime` int(10) DEFAULT NULL,
  `lastip` varchar(20) DEFAULT NULL,
  `logintimes` int(10) DEFAULT '0',
  `stones` int(10) DEFAULT '0',
  `stonespw` varchar(50) NOT NULL DEFAULT '0',
  `credits` int(10) DEFAULT '0',
  `upid` int(15) NOT NULL DEFAULT '0',
  `islocked` tinyint(1) DEFAULT '0',
  `protection` char(1) DEFAULT '0',
  `forumqx` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
partition by range (regdate)
(PARTITION p0 VALUES LESS THAN (20070801),
PARTITION p1 VALUES LESS THAN (20070901),
PARTITION p2 VALUES LESS THAN (20071001),
PARTITION p3 VALUES LESS THAN (20071101),
PARTITION p4 VALUES LESS THAN (20071201),
PARTITION p5 VALUES LESS THAN (20070701),
PARTITION p6 VALUES LESS THAN MAXVALUE );



------解决方案--------------------
MYSQL 分区暂时还不支持自增ID
SQL code

CREATE TABLE IF NOT EXISTS `users` (
  `uid` int(10) NOT NULL,
  `username` varchar(50) NOT NULL,
  `password` char(32) NOT NULL,
  `email` varchar(100) NOT NULL,
  `idcard` varchar(18) NOT NULL,
  `usertype` tinyint(1) NOT NULL DEFAULT '0',
  `userface` varchar(20) DEFAULT '0',
  `regdate` int(10) DEFAULT NULL,
  `lasttime` int(10) DEFAULT NULL,
  `lastip` varchar(20) DEFAULT NULL,
  `logintimes` int(10) DEFAULT '0',
  `stones` int(10) DEFAULT '0',
  `stonespw` varchar(50) NOT NULL DEFAULT '0',
  `credits` int(10) DEFAULT '0',
  `upid` int(15) NOT NULL DEFAULT '0',
  `islocked` tinyint(1) DEFAULT '0',
  `protection` char(1) DEFAULT '0',
  `forumqx` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM  DEFAULT CHARSET=utf8
partition by range (regdate)
(PARTITION p5 VALUES LESS THAN (20070701),
PARTITION p0 VALUES LESS THAN (20070801),
PARTITION p1 VALUES LESS THAN (20070901),
PARTITION p2 VALUES LESS THAN (20071001),
PARTITION p3 VALUES LESS THAN (20071101),
PARTITION p4 VALUES LESS THAN (20071201),
PARTITION p6 VALUES LESS THAN MAXVALUE );