DBAtlas · Atlas für Datenbankbetrieb

1170: ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length

MySQL

Was bedeutet das?

Du hast eine BLOB- oder TEXT-Spalte in einer Index-/Schlüsseldefinition ohne Präfixlänge verwendet. Diese Typen können nicht vollständig indiziert werden; nur die ersten N Zeichen/Bytes sind indizierbar.

Ursache

Definition eines INDEX/UNIQUE/PRIMARY KEY auf einer TEXT/BLOB-Spalte ohne Längenangabe in CREATE TABLE oder CREATE INDEX. MySQL verlangt eine Präfixlänge, weil es diese potenziell sehr großen Werte nicht vollständig indizieren kann.

Lösung

Gib im Index eine Präfixlänge an, etwa INDEX (description(255)). Beispiel: ALTER TABLE my_table ADD INDEX idx_description (description(191)); (191 wird bei utf8mb4 wegen des InnoDB-Limits für Schlüsselpräfixe häufig verwendet). Wird Volltextsuche benötigt, erwäge einen FULLTEXT-Index. Für Felder, die kurz und eindeutig sein sollen, ist die Umstellung der Spalte auf VARCHAR unter Umständen passender.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank