mysql blob key length_mysql提示used in key specification without a key length
今天最火軟件站小編在寫一個(gè)PHP小東西的時(shí)候遇到了一個(gè)問(wèn)題,設(shè)計(jì)數(shù)據(jù)庫(kù)類型的時(shí)候提示:xxxx used in key specification without a key length,百思不得其解,后來(lái)在網(wǎng)上找到關(guān)于這個(gè)問(wèn)題的答案。
原來(lái)Mysql數(shù)據(jù)庫(kù)對(duì)于BLOB/TEXT這樣類型的數(shù)據(jù)結(jié)構(gòu)只能索引前N個(gè)字符。所以這樣的數(shù)據(jù)類型不能作為主鍵,也不能是UNIQUE的。所以要換成VARCH,但是VARCHAR類型的大小也不能大于255,當(dāng)VARCHAR類型的字段大小如果大于255的時(shí)候也會(huì)轉(zhuǎn)換成小的TEXT來(lái)處理。所以也同樣有問(wèn)題。
官方的英文解釋如下:
The?error?happens?because?MySQL?can?index?only?the?first?N?chars?of?a?BLOB?or?TEXT?column.?So?The?error?mainly?happen?when?there?is?a?field/column?type?of?TEXT?or?BLOB?or?those?belongs?to?TEXT?or?BLOB?types?such?as?TINYBLOB,?MEDIUMBLOB,?LONGBLOB,?TINYTEXT,?MEDIUMTEXT,?and?LONGTEXT?that?you?try?to?make?as?primary?key?or?index.?With?full?BLOB?or?TEXT?without?the?length?value,?MySQL?is?unable?to?guarantee?the?uniqueness?of?the?column?as?it’s?of?variable?and?dynamic?size.?So,?when?using?BLOB?or?TEXT?types?as?index,?the?value?of?N?must?be?supplied?so?that?MySQL?can?determine?the?key?length.?However,?MySQL?doesn’t?support?a?key?length?limit?on?TEXT?or?BLOB.?TEXT(88)?simply?won’t?work.
The?error?will?also?pop?up?when?you?try?to?convert?a?table?column?from?non-TEXT?and?non-BLOB?type?such?as?VARCHAR?and?ENUM?into?TEXT?or?BLOB?type,?with?the?column?already?been?defined?as?unique?constraints?or?index.?The?Alter?Table?SQL?command?will?fail.
The?solution?to?the?problem?is?to?remove?the?TEXT?or?BLOB?column?from?the?index?or?unique?constraint,?or?set?another?field?as?primary?key.?If?you?can’t?do?that,?and?wanting?to?place?a?limit?on?the?TEXT?or?BLOB?column,?try?to?use?VARCHAR?type?and?place?a?limit?of?length?on?it.?By?default,?VARCHAR?is?limited?to?a?maximum?of?255?characters?and?its?limit?must?be?specified?implicitly?within?a?bracket?right?after?its?declaration,?i.e?VARCHAR(200)?will?limit?it?to?200?characters?long?only.
Sometimes,?even?though?you?don’t?use?TEXT?or?BLOB?related?type?in?your?table,?the?Error?1170?may?also?appear.?It?happens?in?situation?such?as?when?you?specify?VARCHAR?column?as?primary?key,?but?wrongly?set?its?length?or?characters?size.?VARCHAR?can?only?accepts?up?to?256?characters,?so?anything?such?as?VARCHAR(512)?will?force?MySQL?to?auto-convert?the?VARCHAR(512)?to?a?SMALLTEXT?datatype,?which?subsequently?fail?with?error?1170?on?key?length?if?the?column?is?used?as?primary?key?or?unique?or?non-
總結(jié)
以上是生活随笔為你收集整理的mysql blob key length_mysql提示used in key specification without a key length的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux下导入mysql表乱码_在li
- 下一篇: Mac OS X的远程访问控制条怎么用