从MySQL 8.0版本开始,就不容许建立 MyISAM 分区表了,只容许建立已经实现了本地分区策略的引擎。数据库
到目前为止,只有InnoDB和NDB这两个引擎支持本地分区策略。测试
【1】实际测试this
(1)数据库版本号spa
# 获取版本号 SELECT VERSION(); # 8.0.12
(2)建表(InnoDB引擎)3d
CREATE TABLE `t_innodb` ( `ftime` DATETIME NOT NULL, `c` INT(11) DEFAULT NULL, KEY (`ftime`) ) ENGINE=INNODB DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(ftime)) (PARTITION p_2017 VALUES LESS THAN (2017) ENGINE = INNODB, PARTITION p_2018 VALUES LESS THAN (2018) ENGINE = INNODB, PARTITION p_2019 VALUES LESS THAN (2019) ENGINE = INNODB, PARTITION p_others VALUES LESS THAN MAXVALUE ENGINE = INNODB);
建立成功。code
(3)建表(MyiSAM引擎)blog
CREATE TABLE `t_myisam` ( `ftime` DATETIME NOT NULL, `c` INT(11) DEFAULT NULL, KEY (`ftime`) ) ENGINE=INNODB DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(ftime)) (PARTITION p_2017 VALUES LESS THAN (2017) ENGINE = MYISAM, PARTITION p_2018 VALUES LESS THAN (2018) ENGINE = MYISAM, PARTITION p_2019 VALUES LESS THAN (2019) ENGINE = MYISAM, PARTITION p_others VALUES LESS THAN MAXVALUE ENGINE = MYISAM);
建立失败:hash
错误代码:1497
The mix of handlers in the partitions is not allowed in this version of MySQLit
(4)建表(不支持本地分区策略)io
CREATE TABLE `t_partition_by_hash` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `sName` VARCHAR(10) NOT NULL, `sAge` INT(2) UNSIGNED ZEROFILL NOT NULL, `sAddr` VARCHAR(20) DEFAULT NULL, `sGrade` INT(2) NOT NULL, `sStuId` INT(8) DEFAULT NULL, `sSex` INT(1) UNSIGNED DEFAULT NULL ) ENGINE=MYISAM PARTITION BY HASH(id) PARTITIONS 4;
建立失败:
错误代码:1178
The storage engine for the table doesn't support native partitioning
Good Good Study, Day Day Up.
顺序 选择 循环 总结