当前位置:   article > 正文

mysql普通表转换分区表_mysql 普通表转分区表

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`),

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_log\G;

*************************** 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/961055
推荐阅读
相关标签
  

闽ICP备14008679号