Mysql – Modificarea declarației tabelului pentru a crea un index unic pe câmpul de text lung (Programare, Mysql)

user222427 a intrebat.

Încerc să creez un Alter comandă pentru a crea un unique_index pe primele 8000 de caractere. Nu reușesc să-mi dau seama cum să adaug partea cu 8000. Orice ajutor ar fi apreciat. Mulțumesc!

ALTER TABLE nextractor.tblhtml
  ADD UNIQUE INDEX uniqueindex_InnerHTML (InnerHtml);

2 răspunsuri
Matt Fenwick

În conformitate cu MySQL, aveți nevoie de ceva de genul acesta:

alter table <table_name> 
  add unique index <index_name> (<column_name> (8000))

Aceasta este gramatica relevantă:

| ADD [CONSTRAINT [symbol]]
        UNIQUE [INDEX|KEY] [index_name]
        [index_type] (index_col_name,...) [index_option] ...

și

index_col_name:
    col_name [(length)] [ASC | DESC]

Comentarii

  • am încercat modificarea de mai sus și îmi dă o sintaxă incorectă lângă ( – user222427
  • @Mike — Am uitat de extra parantezele din jurul numelui coloanei și a lungimii. Acum funcționează. –  > Por Matt Fenwick.
  • Când am făcut acest lucru, am primit o eroare de la MySql care spunea: „Cheia specificată a fost prea lungă; lungimea maximă a cheii este de 767 de octeți”, deci pentru tabelele UTF8 se folosesc 4 octeți pe caracter. Aveam câmpul varchar cu o lungime de 255, așa că, dacă am setat câmpul varchar la 191, am avut suficient spațiu pentru a crea un nou index unic. –  > Por John Ballinger.
rizon

ALTER TABLE nextractor.tblhtml ADD UNIQUE INDEX uniqueindex_InnerHTML (InnerHtml (8000));

Tags: