CREATE TABLE TAB_LOGRECORD(ID         INT UNSIGNED NOT NULL AUTO_INCREMENT,TIME       DATETIME,IP         BIGINT,DOMAIN     VARCHAR(1000),TYPE       VARCHAR(15),FLAG       ENUM('-','+','-E','+E'),PRIMARY KEY(ID))PARTITION BY RANGE(TIME)                    (                        PARTITION p0 VALUES LESS THAN ('06:00:00'),                        PARTITION p1 VALUES LESS THAN ('12:00:00'),                        PARTITION p2 VALUES LESS THAN ('18:00:00'),                        PARTITION p3 VALUES LESS THAN MAXVALUE                    );
出错:ERROR 1064(42000):Values value must be of same type as partition function near').....那么应该如何写呢?谁帮帮我?

解决方案 »

  1.   

    二个问题,一、RANGE用HOUR返回一个数字。二、TIME必须被包含在表的主键中。mysql> CREATE TABLE TAB_LOGRECORD
        -> (
        ->  ID     INT UNSIGNED NOT NULL AUTO_INCREMENT,
        ->  TIME     DATETIME,
        ->  IP     BIGINT,
        ->  DOMAIN   VARCHAR(1000),
        ->  TYPE     VARCHAR(15),
        ->  FLAG     ENUM('-','+','-E','+E'),
        ->  PRIMARY KEY(ID,TIME)
        -> )
        -> PARTITION BY RANGE(hour(TIME))
        -> (
        ->  PARTITION p0 VALUES LESS THAN (6),
        ->  PARTITION p1 VALUES LESS THAN (12),
        ->  PARTITION p2 VALUES LESS THAN (18),
        ->  PARTITION p3 VALUES LESS THAN MAXVALUE
        -> );
    Query OK, 0 rows affected (0.14 sec)mysql>