myisam表,單列索引,最大長度不能超過 1000 bytes; innodb表,單列索引,最大長度不能超過 767 bytes;
utf8 編碼時 一個字符占三個字節 varchar 型能建立索引的最大長度分別為 myisam 1000/3 333 innodb 767/3 255
1、先檢查一下數據庫被限制了索引的大小 SHOW variables like ‘innodb_large_prefix’; 如果查詢的值是off的話,執行下面的命令 SET GLOBAL INNODB_LARGE_PREFIX = ON; 2、執行完了,還需要查看當前innodb_file_format引擎格式類型是不是BARRACUDA SHOW variables like ‘innodb_file_format’; 如果不是的話則需要修改 SET GLOBAL innodb_file_format = BARRACUDA;
在my.cnf配置文件中同步更改
###########################################
innodb_large_prefix=on
##########################################
utf8mb4 編碼時 一個字符占四個字節 varchar 型能建立索引的最大長度分別為 myisam 1000/4 250 innodb 767/4 191
CREATE TABLE `table_name` ( `id` int(11) NOT NULL AUTO_INCREMENT, `apple_id` varchar(255) DEFAULT 'unknown' COMMENT 'apple_id', `ipad_id` varchar(255) NOT NULL COMMENT 'ipad id', `version` varchar(255) DEFAULT 'unknown' COMMENT '版本信息', `start_time` datetime NOT NULL COMMENT '創建時間', `end_time` datetime NOT NULL COMMENT '結束時間', PRIMARY KEY (`id`), KEY `idx_ipad_id` (`ipad_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='退出實例表' AUTO_INCREMENT = 1
###########
# 這里用了InnoDB和utf8mb4