mysql error: key was too long ?

Stephan Liebig

Erfahrenes Mitglied
Wo liegt das problem?
Kann ich das mit dem 1000 bytes ändern?

Code:
CREATE TABLE REGISTRY(
MAINKEY varchar( 255 ) NOT NULL ,
NAME varchar( 100 ) NOT NULL ,
VAL_CHAR varchar( 255 ) ,
VAL_DATE datetime,
VAL_INT int( 11 ) ,
VAL_INT2 bigint( 20 ) ,
VAL_INT3 bigint( 20 ) ,
VAL_DOUBLE double,            #hier ist der fehler
VAL_BLOB longtext,
VAL_BIN longblob,
VAL_TYP smallint( 6 ) ,
CACHABLE enum( 'N', 'Y' ) default 'N' NOT NULL ,
READONLY enum( 'N', 'Y' ) default 'N' NOT NULL ,
LAST_CHANGE timestamp default '0000-00-00 00:00:00' NOT NULL ,
PRIMARY KEY ( MAINKEY, NAME )
);

MySQL meldet: Dokumentation
#1071 - Specified key was too long; max key length is 1000 bytes
 
Vorab:
Bei der MySQL-Dokumentation oder bei :google: findest du sogar noch mehr Infos als ich jetzt hier schreibe. ;)

Die 1000 bytes sind der Standartwert jeder MySQL-Basisinstallation, wenn du auf die MySQL-Konfiguration zugreifen kannst dann kannst du diesen Wert auch ändern.

Einfach in der Datei /etc/my.cfg nach max_key_lenght suchen und da den Wert höher setzen oder z.B. über Webmin unter "Server => MySQL Datenbank Server => MySQL Server Configuration" den Punkt "Key buffer size" von standart auf deinen gewünschten Wert setzen.
 
Ich verstehs nicht ..
Habe es jetzt wie folgt eingetragen:

Code:
# The MySQL server
[ mysqld]
set-variable=local-infile=0
port		= 3306
socket		= /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 3M
table_cache = 64
sort_buffer_size = 1024K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_key_lengh = 5M                                      #hab ich so eingefügt
key_buffer_size = 5M                                      #hab ich so eingefügt

hab die teile niergends in der my.cnf gefunden, also dachte ich, ich füge die mal so ein.
 
Ähm... Sorry, mein Fehler...

Als erstes nimm mal max_key_lengh und key_buffer_size wieder raus...

Ich vermute dein Zeichensatz (Collation) der DB steht auf UTF-8? Du müßtest den Zeichensatz ändern da bei UTF-8 ein Zeichen = 3 byte sind. Änderst du den Zeichensatz auf latin1 (= 1byte pro Zeichen) sollte es gehen, is auch logisch jeder Zeichensatz mit UTF-8 ist das dreifache wie bei einem latin1.

Sorry ich hab beim ersten Post zu schnell reagiert ohne mich nochmal zu informieren.
 

Neue Beiträge

Zurück