2016-05-05 24 views
0

Einfache Frage. Wenn ich eine Tabelle wie die folgende haben:MySQL ändern Länge des Schlüssels

CREATE TABLE `exampletable` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `textfield` varchar(700) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `textfield` (`textfield`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Wie ändere ich die Länge des textfield KEY? Für latin1 Zeichensatz ist die Standardlänge 767, und für UTF8 ist es 255. Aber wenn ich eine latin1 Tabelle zum Beispiel habe, wie ändere ich den Schlüssel, um eine maximale Länge von 255 zu erzwingen?

Antwort

1

haben Sie können einen Index für die führenden Teil einer VARCHAR(x) Spalte erstellen. Siehe hier:

http://dev.mysql.com/doc/refman/5.7/en/create-index.html

CREATE INDEX part_of_textfield ON example_table (textfield(10)); 

Diese mit Suche helfen. Aber es ist nicht als Primärschlüssel oder mit GROUP BY nützlich.

Sie können dies auch in einer Tabellendefinition sind wie folgt:

CREATE TABLE exampletable (
    id int(11) NOT NULL AUTO_INCREMENT, 
    textfield varchar(700) DEFAULT NULL, 
    PRIMARY KEY (id), 
    KEY partial_textfield (textfield(10)) 
) 
1

Versuchen

ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(255); 

sicher sein, Sie mehr als 255 Zeichen nicht

+0

Wie ich aus Ihrem Post zu verstehen, ist es nicht möglich, die Länge des Schlüssels zu ändern, ohne dass sich die Länge der Säule zu ändern? –

+0

Nein, die Überprüfung der Länge ist in der Spalte ... der Schlüssel ist "abgeleitet" von der Spalte ... – scaisEdge

Verwandte Themen