zoukankan      html  css  js  c++  java
  • mysql 普通表转分区表

    <pre name="code" class="sql"> CREATE TABLE `history_log` (
      `id` bigint(20) unsigned NOT NULL,
      `itemid` bigint(20) unsigned NOT NULL,
      `clock` int(11) NOT NULL DEFAULT '0',
      `timestamp` int(11) NOT NULL DEFAULT '0',
      `source` varchar(64) NOT NULL DEFAULT '',
      `severity` int(11) NOT NULL DEFAULT '0',
      `value` text NOT NULL,
      `logeventid` int(11) NOT NULL DEFAULT '0',
      `ns` int(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`),
      UNIQUE KEY `history_log_2` (`itemid`,`id`),
      KEY `history_log_1` (`itemid`,`clock`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    alter table history_log partition by RANGE (clock)
    (PARTITION  p20150806 values less than (20150807));
    
    mysql> alter table history_log partition by RANGE (clock)
        -> (PARTITION  p20150806 values less than (20150807));
    ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function
    
    主键必须包含分区键:
    
    mysql>  CREATE TABLE `history_log` (
        ->   `id` bigint(20) unsigned NOT NULL,
        ->   `itemid` bigint(20) unsigned NOT NULL,
        ->   `clock` int(11) NOT NULL DEFAULT '0',
        ->   `timestamp` int(11) NOT NULL DEFAULT '0',
        ->   `source` varchar(64) NOT NULL DEFAULT '',
        ->   `severity` int(11) NOT NULL DEFAULT '0',
        ->   `value` text NOT NULL,
        ->   `logeventid` int(11) NOT NULL DEFAULT '0',
        ->   `ns` int(11) NOT NULL DEFAULT '0',
        ->   PRIMARY KEY (`id`,`clock`),
        ->   UNIQUE KEY `history_log_2` (`itemid`,`id`),
        ->   KEY `history_log_1` (`itemid`,`clock`)
        -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> alter table history_log partition by RANGE (clock)
        -> (PARTITION  p20150806 values less than (20150807));
    ERROR 1503 (HY000): A UNIQUE INDEX must include all columns in the table's partitioning function
    
    
    唯一索引也得包含分区键:
     CREATE TABLE `history_log` (
      `id` bigint(20) unsigned NOT NULL,
      `itemid` bigint(20) unsigned NOT NULL,
      `clock` int(11) NOT NULL DEFAULT '0',
      `timestamp` int(11) NOT NULL DEFAULT '0',
      `source` varchar(64) NOT NULL DEFAULT '',
      `severity` int(11) NOT NULL DEFAULT '0',
      `value` text NOT NULL,
      `logeventid` int(11) NOT NULL DEFAULT '0',
      `ns` int(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`,`clock`),
      UNIQUE KEY `history_log_2` (`itemid`,`id`,`clock`),
      KEY `history_log_1` (`itemid`,`clock`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    partition by RANGE (clock)  (PARTITION  p20150806 values less than (20150807));
    ---------------------------------------------------------------------------------
    mysql>  CREATE TABLE `history_log` (
        ->   `id` bigint(20) unsigned NOT NULL,
        ->   `itemid` bigint(20) unsigned NOT NULL,
        ->   `clock` int(11) NOT NULL DEFAULT '0',
        ->   `timestamp` int(11) NOT NULL DEFAULT '0',
        ->   `source` varchar(64) NOT NULL DEFAULT '',
        ->   `severity` int(11) NOT NULL DEFAULT '0',
        ->   `value` text NOT NULL,
        ->   `logeventid` int(11) NOT NULL DEFAULT '0',
        ->   `ns` int(11) NOT NULL DEFAULT '0',
        ->   PRIMARY KEY (`id`,`clock`),
        ->   UNIQUE KEY `history_log_2` (`itemid`,`id`,`clock`),
        ->   KEY `history_log_1` (`itemid`,`clock`)
        -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8
        -> partition by RANGE (clock)  (PARTITION  p20150806 values less than (20150807));
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> desc history_log;
    +------------+---------------------+------+-----+---------+-------+
    | Field      | Type                | Null | Key | Default | Extra |
    +------------+---------------------+------+-----+---------+-------+
    | id         | bigint(20) unsigned | NO   | PRI | NULL    |       |
    | itemid     | bigint(20) unsigned | NO   | MUL | NULL    |       |
    | clock      | int(11)             | NO   | PRI | 0       |       |
    | timestamp  | int(11)             | NO   |     | 0       |       |
    | source     | varchar(64)         | NO   |     |         |       |
    | severity   | int(11)             | NO   |     | 0       |       |
    | value      | text                | NO   |     | NULL    |       |
    | logeventid | int(11)             | NO   |     | 0       |       |
    | ns         | int(11)             | NO   |     | 0       |       |
    +------------+---------------------+------+-----+---------+-------+
    9 rows in set (0.01 sec)
    
    mysql> show create table history_logG;
    *************************** 1. row ***************************
           Table: history_log
    Create Table: CREATE TABLE `history_log` (
      `id` bigint(20) unsigned NOT NULL,
      `itemid` bigint(20) unsigned NOT NULL,
      `clock` int(11) NOT NULL DEFAULT '0',
      `timestamp` int(11) NOT NULL DEFAULT '0',
      `source` varchar(64) NOT NULL DEFAULT '',
      `severity` int(11) NOT NULL DEFAULT '0',
      `value` text NOT NULL,
      `logeventid` int(11) NOT NULL DEFAULT '0',
      `ns` int(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`,`clock`),
      UNIQUE KEY `history_log_2` (`itemid`,`id`,`clock`),
      KEY `history_log_1` (`itemid`,`clock`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    /*!50100 PARTITION BY RANGE (clock)
    (PARTITION p20150806 VALUES LESS THAN (20150807) ENGINE = InnoDB) */
    1 row in set (0.00 sec)
    
    ERROR: 
    No query specified


    
                                        
    
  • 相关阅读:
    LINUX下mysql的大小写是否区分设置 转
    在CentOS搭建Git服务器 转
    Idea实现WebService实例 转
    Intellij 中的git操作 转!
    Maven配置 settings.xml 转
    Maven使用第三方jar文件的两种方法 转
    Maven : 将Jar安装到本地仓库和Jar上传到私服 转
    maven 私服 配置 转
    Maven 私服配置 转
    Linux 下挂载硬盘的 方法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351481.html
Copyright © 2011-2022 走看看