1071 - Specified key was too long; max key length is 767 bytes, Time: 0.001000s

數據如下

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;

在這裏插入圖片描述
在這裏插入圖片描述

成功解決

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章