創(chuàng)建索引的時候報錯 :Index column size too large. The maximum column size is 767 bytes.
錯誤原因
由于MySQL的Innodb引擎表索引字段長度的限制為767字節(jié)馋贤,
因此對于多字節(jié)字符集的大字段或者多字段組合渔彰,
創(chuàng)建索引時會出現(xiàn)此錯誤鱼炒。
以utf8mb4字符集字符串類型字段為例,
utf8mb4是4字節(jié)字符集,
則默認支持的索引字段最大長度是191字符(767字節(jié)/4字節(jié)每字符≈191字符),
因此在varchar(255)或char(255)類型字段上創(chuàng)建索引會失敗叭爱。
解決辦法
被創(chuàng)建索引的列類型最大值超過了索引要求的最大長度∈。可修改將被創(chuàng)建為索引列的字段的類型長度买雾。也可對數(shù)據(jù)庫進行修改
CREATE TABLE oauth_client_details
(
client_id VARCHAR(256) NOT NULL COMMENT '客戶端ID',
resource_ids VARCHAR(256) COMMENT '資源ID集合,多個資源時用逗號(,)分隔',
client_secret VARCHAR(256) COMMENT '客戶端密匙',
scope VARCHAR(256) COMMENT '客戶端申請的權限范圍',
authorized_grant_types VARCHAR(256) COMMENT '客戶端支持的grant_type',
web_server_redirect_uri VARCHAR(256) COMMENT '重定向URI',
authorities VARCHAR(256) COMMENT '客戶端所擁有的Spring Security的權限值多個(,)分隔',
access_token_validity INTEGER COMMENT '訪問令牌有效時間值(單位:秒)',
refresh_token_validity INTEGER COMMENT '更新令牌有效時間值(單位:秒)',
additional_information VARCHAR(4096) COMMENT '預留字段',
autoapprove VARCHAR(256) COMMENT '用戶是否自動Approval操作',
CONSTRAINT pk_oauth_client_details_client_id PRIMARY KEY (client_id)
) COMMENT '客戶端信息';
上面的sql會報該錯誤。原因是client_id字段的長度是256杨帽,而又將client_id設為了主鍵(默認主鍵為索引)漓穿,超出了索引所規(guī)定的最大長度。
修改字段
client_id VARCHAR(64) NOT NULL COMMENT '客戶端ID',
修改數(shù)據(jù)庫
set global innodb_file_format = BARRACUDA
set global innodb_large_prefix = ON