RDS MySQL 为utf8mb4表创建索引的方法
发布日期:2015-11-6 15:11:6
RDS MySQL 为utf8mb4表创建索引的方法 我们知道MySQL Innodb 对于索引长度的限制为 767 字节,并且UTF8mb4字符集是4字节字符集,则 767字节 / 4字节每字符 = 191字符(默认索引最大长度),所以在varchar(255)或char(255) 类型字段上创建索引会失败,提示最大索引长度为767字节。 UTF8mb4 字符集在Mysql官方网站的参考链接如下: http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html 解决问题的步骤: 1. 首先通过RDS控制台->参数设置中调整 innodb_large_prefix 为ON。 2. 创建表的时候指定表的row format格式为Dynamic或者Compressed,如下示例: 2.1(xxxx@xxxx.mysql.rds.aliyuncs.com) [xxxx]> create table idx_length_test_03 (id int auto_increment primary key, name varchar(255)) ROW_FORMAT=DYNAMIC default charset utf8mb4; Query OK, 0 rows affected (0.00 sec) 2.2(xxxx@xxxx.mysql.rds.aliyuncs.com) [xxxx]> insert into idx_length_test_03 (name) values ('xxxx'); Query OK, 1 row affected (0.00 sec) 2.3(xxxx@xxxx.mysql.rds.aliyuncs.com) [xxxx]> create index idx_leng on idx_length_test_03 (name); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 注:此步Query OK 说明正常 2.4(xxxx@xxxx.mysql.rds.aliyuncs.com) [xxxx]> show warnings; Empty set (0.00 sec) 2.5(xxxx@xxxx.mysql.rds.aliyuncs.com) [xxxx]> show create table idx_length_test_03 \G *************************** 1. row *************************** Table: idx_length_test_03 Create Table: CREATE TABLE `idx_length_test_03` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_leng` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC 1 row in set (0.00 sec) 下一条: 关于RDS MySQL的单表尺寸限制相关
|