數據如下
CREATE TABLE `user_innodb` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`gender` tinyint(1) DEFAULT NULL,
`phone` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `comidx_name_phone` (`name`,`phone`)
) ENGINE=InnoDB AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8mb4;
運行如下錯誤:
1071 - Specified key was too long; max key length is 767 bytes, Time: 0.001000s
錯誤原因:
這個“ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes”錯誤是指超出索引字節的限制,並不是指字段長度限制。在官方文檔“Limits on InnoDB Tables”有關於這方面的介紹、描述(詳情請見參考資料):
解決方案
啓用系統變量innodb_large_prefix
注意:光有這個系統變量開啓是不夠的。必須滿足下面幾個條件:
1: 系統變量innodb_large_prefix爲ON
2: 系統變量innodb_file_format爲Barracuda
3: ROW_FORMAT爲DYNAMIC或COMPRESSED
set global innodb_large_prefix=on;