MySQL ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
?
?
今天在使用mysql時(shí),又遇到了如博文標(biāo)題所示的問題,以前針對該問題未進(jìn)行記錄,今天特意進(jìn)行說明存檔。
??????? 該問題是由鍵值字段長度過長導(dǎo)致。mysql支持?jǐn)?shù)據(jù)庫表單一鍵值的最大長度不能超過767字節(jié),超出這個(gè)長度即報(bào)錯(cuò)(見標(biāo)題名稱)。一般情況下,不會有鍵值字段的長度會超出該長度。但是需要注意的是,隨著全球化進(jìn)程的加快,數(shù)據(jù)庫表采用UTF-8格式的趨勢是越來越明顯,這導(dǎo)致varchar類型字段的長度成倍增長,一不小心就容易出現(xiàn)以上問題。
??????? 假設(shè)存在以下表定義:
??????? create table test (
??????????????? name varchar(256) not null primary key,
??????????????? age int unsigned not null
??????? ) engine = InnoDB;
??????? 當(dāng)使用UTF-8格式建立該表時(shí),就會出現(xiàn)如標(biāo)題所示問題。關(guān)鍵原因是UTF-8使用變長編碼,最多可能使用3個(gè)字節(jié)表示表示1個(gè)符號。所以對于上述表中的name字段,其實(shí)際長度超出255x3>767字節(jié),達(dá)到了255x3=768字節(jié),問題出現(xiàn)。如果把長度改為255則沒有問題,或者不使用utf-8格式也沒有問題。
轉(zhuǎn)載于:https://www.cnblogs.com/IamThat/archive/2013/05/22/3092971.html
總結(jié)
以上是生活随笔為你收集整理的MySQL ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Persist Security Inf
- 下一篇: Oracle查询一个用户的所有表的结构信