Error de MySQL 1170 (42000): Columna de GOTA/TEXT Utilitzada en Especificació Clau Sense una Llargada Clau
Quan creant una taula nova o canviant un existir presenta amb claus primàries, coaccions úniques i índexs, o quan definint un índex nou amb Canviar manipulació de Taula declaració en la base de dades de MySQL, l'error següent pot ocórrer i prohibir l'el comanda de completar:
ERROR 1170 (42000): Columna de GOTA/TEXT 'field_name' utilitzada en especificació clau sense una llargada clau
L'error passa perquè MySQL pot indexar només el primer N socarrima d'una columna de GOTA o TEXT. Que així L'error principalment passa quan hi ha un tipus de camp/columna de TEXT o GOTA o aquells pertany a tipus de TEXT o GOTA com TINYBLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, MEDIUMTEXT, i LONGTEXT que intenta fer com clau primària o indexa. Amb plena GOTA o TEXT sense el valor de llargada, MySQL és incapaç de garantir la unicitat de la columna com és de mida variable i dinàmica. Així, en utilitzar tipus de GOTA o TEXT com índex, el valor de N s'ha de donar de manera que MySQL pugui determinar la llargada clau. Tanmateix, MySQL no dóna suport a límit en TEXT o GOTA. TEXT(88) simplement no treballarà.
L'error també apareixerà des de quan intenti convertir una columna de taula no-TEXT i tipus NO-GOTA com VARCHAR i ENUM a TEXT o tipus de GOTA, amb la columna ja estat definit com coaccions úniques o índex. El Canviar comanda de SQL de Taula fallarà.
La solució al problema és treure la columna de TEXT o GOTA de l'índex o coacció única, o posar un altre camp com clau primària. Si no pot fer allò, i volent posar un límit a la columna de TEXT o GOTA, intentar utilitzar tipus de VARCHAR i posar un límit de llargada en això. Per defecte, VARCHAR es limita a un màxim de 255 caràcters i el seu límit s'ha d'especificar implícitament dins d'un parèntesi bé després de la seva declaració, i.e VARCHAR(200) el limitarà a 200 caràcters molt de temps només.
A vegades, tot i que no utilitza TEXT o la GOTA relacionava tipus a la seva taula, l'Error 1170 també pot aparèixer. Passa en la situació com quan especifica columna de VARCHAR com clau primària, però equivocadament posa la seva llargada o mida de caràcters. VARCHAR poden només accepta fins a 256 caràcters, així tot com VARCHAR(512) forçarà MySQL a auto convertir el VARCHAR(512) en un SMALLTEXT datatype, la qual cosa posteriorment falla amb l'error 1170 en llargada clau si la columna s'utilitza com índex clau o únic o no únic primari. Per resoldre aquest problema, especifiqui una xifra menys de 256 com la mida per a camp de VARCHAR.
IMPORTANT: La pàgina és màquina traduïda i proporcionada "com és" sense garantia. La traducció automàtica pot ser difícil d'entendre. Si us plau refereixi's a article anglès original quan sigui que possible.
Articles Relacionats
- Com Trobar i Reemplaçar Text en la Base de Dades de MySQL que utilitza SQL
- Error de Pregunta de SQL de WordPress MySQL en Classe de WPDB
- Còpia de Text Impossibilitada (Prepari Error a la Còpia i a Pasta Que No Funciona)
- Canviï i Restauri Contrasenya d'arrel de MySQL
- Addició Extraordinàriament Més Camps a Correu/Pàgina de WordPress Write/Edit Bé Columna
- Tregui o Retalli Primer o Finalment Pocs Caràcters en la Base de Dades de MySQL amb SQL
- Sintonia d'Actuació de Base de Dades de MySQL Millor Practica Classe de Vídeo
- Servidor de Web Que Instal·la en FreeBSD 6.0 amb l'apatxe 2.2, MySQL 5.0 i PHP 5 - Part 3
- Comprovi i Optimitzi MySQL Base de Dades Automàticament amb Crontab/Cron
- Error de Taula de Gota d'Oracle d'ORA-02449










































30 d'abril, 2009 22:32
Gràcies per al correu.
Necessito més llarga una clau que és llavors 256.
Què puc fer?
googling això durant les 3 hores passades sense sort...
(El comentari Paco Zarabozo no funcionava per mi)
13 de desembre, 2008 22:20
[...] corria a alguns problemes, feia marxa enrere per escairar-ne un. Afortunadament la meva reserva restaurava la base de dades de Latin1 sense algun [...]
29 d'octubre, 2008 10:16
Bé, aquí és una altra solució. Pot de fet especificar la llargada clau per al seu índex mentre manté el seu camp com longtext. Això és un exemple:
creï missatges de taula (
id int(20) auto_increment no nul,
longtext de missatge,
índex (message(996), id)
);
missatges de desc;
índex de demostració des de missatges;
996 és la llargada clau de maximium que mySQL ha acceptat per a mi.
Alegries,
Paco
27 d'octubre, 2008 19:50
Gràcies molt!
6 d'octubre, 2008 03:50
Gràcies molt. Tenia aquest problema i era un estalviador de vida!
7 de març, 2008 04:15
Gràcies, molt bo definit
23 de febrer, 2008 03:40
Gràcies pel correu. Molt útil.
20 de febrer, 2008 02:45
Gràcies! Correu molt útil.
30 d'agost, 2007 18:33
Gràcies per posar això. No aconseguia l'error i m'estalviava frustració d'o molt. L'havia posat en la categoria 'de Gent de Goog' en qualsevol moment