In dieser kurzen Anleitung wird erklärt, was die Ursachen für den oben genannten Fehler sein können und wie man sie behebt.
Mögliche Ursachen
Der Fehler "Specified key was too long; max key length is XXX bytes" kann durch diverse Content-Management-Systeme (CMS) oder in direkter Interaktion zwischen PHP und Datenbanksystemen wie MySQL oder MariaDB getriggert werden. Dieser Hinweis deutet darauf hin, dass beim Ausführen eines "CREATE/UPDATE"-Befehls für das betreffende Feld unzureichender Speicherplatz zur Verfügung steht.
Die gängigsten Gründe dafür sind:
MyISAM statt InnoDB
Oftmals wird in Datenbanken nach wie vor die Speichermotorik von MyISAM eingesetzt. Im Gegensatz dazu bietet InnoDB Unterstützung für Fremdschlüsselbeziehungen und gewährleistet somit eine höhere Datenintegrität auf Datenbankebene. Solche Features sind bei MyISAM nicht vorhanden. Sollte daher ein Fremd- oder Primärschlüssel jenseits des zulässigen Speicherbereichs eingesetzt werden, resultiert dies bei MyISAM in einem Fehler. Eine Konversion der Engine zu InnoDB stellt in solchen Fällen den effizientesten und unkompliziertesten Lösungsansatz dar.
Datenbank-Server Version veraltet
Bei Verwendung von MariaDB und MySQL kann es vorkommen, dass die Datenbanksysteme nicht auf dem neuesten Stand sind. Eine Aktualisierung der Server-Infrastruktur stellt in solchen Fällen die geeignete Maßnahme dar.
Primary- /Foreign Key vergrößern
Bei Auftreten des Fehlers "Specified key was too long; max key length is XXX bytes" kann eine Lösung darin bestehen, dem betroffenen Feld einen erweiterten Speicherbereich zuzuweisen. Dies lässt sich typischerweise durch den ALTER TABLE-Befehl realisieren:
ALTER TABLE tabelle MODIFY spalte INT(11);