mysql索引長度限制


 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM