下面的语句老是报错
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 );

解决方案 »

  1.   

    MYSQL 分区暂时还不支持自增IDCREATE 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 );
      

  2.   

    还是报错#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 range (regdate)
      

  3.   

    我这里没有的错误:
    mysql> 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 );
    Query OK, 0 rows affected (0.01 sec)mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | fish           | 
    | t11            | 
    | t233           | 
    | users          | 
    +----------------+
    4 rows in set (0.00 sec)mysql> show create table users\G
    *************************** 1. row ***************************
           Table: users
    Create Table: CREATE TABLE `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 /*!50100 PARTITION BY RANGE (regdate) (PARTITION p5 VALUES LESS THAN (20070701) ENGINE = MyISAM, PARTITION p0 VALUES LESS THAN (20070801) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (20070901) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (20071001) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (20071101) ENGINE = MyISAM, PARTITION p4 VALUES LESS THAN (20071201) ENGINE = MyISAM, PARTITION p6 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
    1 row in set (0.00 sec)mysql> select version()\G
    *************************** 1. row ***************************
    version(): 5.1.21-beta
    1 row in set (0.00 sec)
      

  4.   

    PS :如果是MYISAM表的话,用MERGE引擎就可以了。不用分区。
    INNODB表用分区好点。
      

  5.   

    我也觉得应该可以创建的,但就是报错,不知道咋回事
    看是不是版本的问题呢,我的mysql版本是:5.1.12-beta
      

  6.   

    如果是你的版本问题的话。去MYSQL官方论坛问问。
      

  7.   

    本帖最后由 yueliangdao0608 于 2007-12-07 08:58:32 编辑
      

  8.   

    最好在mysql的命令行上使用分区,用phpmyadmin可能会出错,也许是phpmyadmin版本问题.
      

  9.   

    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',
    KEY `idx_userid` (`uid`)
       ) 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 );