第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

MySQL錯(cuò)誤:沒(méi)有密鑰長(zhǎng)度的密鑰規(guī)范

MySQL錯(cuò)誤:沒(méi)有密鑰長(zhǎng)度的密鑰規(guī)范

鴻蒙傳說(shuō) 2019-07-11 16:09:46
MySQL錯(cuò)誤:沒(méi)有密鑰長(zhǎng)度的密鑰規(guī)范我有一個(gè)表,它的主鍵是varchar(255)。有些情況下,255個(gè)字符是不夠的。我嘗試將字段更改為文本,但得到了以下錯(cuò)誤:BLOB/TEXT column 'message_id' used in key specification without a key length我怎么才能解決這個(gè)問(wèn)題?編輯:我還應(yīng)該指出,這個(gè)表有一個(gè)包含多列的復(fù)合主鍵。
查看完整描述

3 回答

?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊

發(fā)生此錯(cuò)誤是因?yàn)镸ySQL只能索引BLOB或TEXT列。因此,錯(cuò)誤主要發(fā)生在TEXT或者那些屬于TEXTBLOB類型,如TINYBLOBMEDIUMBLOBLONGBLOBTINYTEXTMEDIUMTEXT,和LONGTEXT你試著做一個(gè)主鍵或索引。滿足感BLOBTEXT如果沒(méi)有長(zhǎng)度值,MySQL無(wú)法保證列的唯一性,因?yàn)樗哂凶兞亢蛣?dòng)態(tài)大小。所以,當(dāng)使用BLOBTEXT類型作為索引,必須提供N的值,這樣MySQL才能確定鍵長(zhǎng)度。但是,MySQL不支持TEXTBLOBTEXT(88)根本沒(méi)用。

轉(zhuǎn)換表列時(shí),也會(huì)彈出該錯(cuò)誤。non-TEXTnon-BLOB類型,如VARCHARENUM進(jìn)TEXTBLOB類型,列已定義為唯一約束或索引。ALTERTABLE SQL命令將失敗。

問(wèn)題的解決方案是刪除TEXTBLOB列來(lái)自索引或唯一約束,或?qū)⒘硪粋€(gè)字段設(shè)置為主鍵。如果您不能這樣做,并且希望對(duì)TEXTBLOB列,嘗試使用VARCHAR鍵入并在其上設(shè)置長(zhǎng)度限制。默認(rèn)情況下,VARCHAR限制為最多255個(gè)字符,且其限制必須在其聲明后的括號(hào)內(nèi)隱式指定,即VARCHAR(200)將限制為200個(gè)字符的長(zhǎng)度。

有時(shí),即使你不使用TEXTBLOB相關(guān)類型在您的表中,錯(cuò)誤1170也可能出現(xiàn)。它發(fā)生在一種情況下,例如當(dāng)您指定VARCHAR列作為主鍵,但設(shè)置的長(zhǎng)度或字符大小錯(cuò)誤。VARCHAR只能接受最多256個(gè)字符,因此任何諸如VARCHAR(512)將迫使mysql自動(dòng)轉(zhuǎn)換VARCHAR(512)轉(zhuǎn)到SMALLTEXTdataType,如果將列用作主鍵或唯一或非唯一索引,則數(shù)據(jù)類型將失敗,從而導(dǎo)致鍵長(zhǎng)度上的錯(cuò)誤1170。若要解決此問(wèn)題,請(qǐng)將小于256的數(shù)字指定為VARCHAR場(chǎng)。

參考資料:MySQLError 1170(42000):鍵規(guī)范中使用的BLOB/Text列沒(méi)有密鑰長(zhǎng)度


查看完整回答
反對(duì) 回復(fù) 2019-07-11
?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊

應(yīng)該定義TEXT要索引的列。

InnoDB有限制768每個(gè)索引鍵的字節(jié)數(shù),您將不能創(chuàng)建一個(gè)比這更長(zhǎng)的索引。

這樣做會(huì)很好:

CREATE TABLE t_length (
      mydata TEXT NOT NULL,
      KEY ix_length_mydata (mydata(255)))
    ENGINE=InnoDB;

注意,鍵大小的最大值取決于列字符集。它是767單字節(jié)字符集的字符,如LATIN1而且只有255字符UTF8 (MySQL只使用BMP這最多需要3每個(gè)字符的字節(jié))

如果您需要整個(gè)專欄成為PRIMARY KEY,計(jì)算SHA1MD5散列,并將其用作PRIMARY KEY.


查看完整回答
反對(duì) 回復(fù) 2019-07-11
  • 3 回答
  • 0 關(guān)注
  • 904 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)