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