Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL bei BLOB- oder TEXT-Spalten den Fehler „Schlüsselspezifikation ohne Schlüssellänge' aus?

Warum gibt MySQL bei BLOB- oder TEXT-Spalten den Fehler „Schlüsselspezifikation ohne Schlüssellänge' aus?

Linda Hamilton
Linda HamiltonOriginal
2025-01-19 23:42:11848Durchsuche

Why Does MySQL Throw a

Fehlerbehebung beim MySQL-Fehler „Schlüsselspezifikation ohne Schlüssellänge“

Dieser Fehler tritt normalerweise auf, wenn eine BLOB- oder TEXT-Spalte in einer Primärschlüssel- oder Indexdefinition verwendet wird, ohne eine Schlüssellänge anzugeben.

Das Problem verstehen

Der Indizierungsmechanismus von MySQL weist aufgrund ihrer variablen Länge Einschränkungen bei BLOB- und TEXT-Spalten auf. Ohne eine definierte Länge kann die Datenbank keine Eindeutigkeit garantieren, daher der Fehler. Für eine ordnungsgemäße Überprüfung der Eindeutigkeit des Schlüssels ist eine feste Länge erforderlich.

Lösungen

Mehrere Ansätze können dieses Problem lösen:

  • BLOB/TEXT aus dem Schlüssel entfernen: Die einfachste Lösung besteht oft darin, die fehlerhafte Spalte aus der Schlüsseldefinition zu entfernen. Identifizieren Sie ein weiteres geeignetes Feld zur eindeutigen Identifizierung.
  • Verwenden Sie einen anderen Primärschlüssel: Wenn die BLOB- oder TEXT-Spalte für die Eindeutigkeit entscheidend ist, wählen Sie eine andere Spalte als Primärschlüssel.
  • Verwenden Sie VARCHAR mit Längenbeschränkung: Ändern Sie den Spaltentyp in VARCHAR(n), wobei „n“ eine bestimmte Zeichenbeschränkung darstellt (z. B. VARCHAR(255)). Dadurch werden Daten variabler Länge mit einer definierten Maximallänge bereitgestellt, die für die Indizierung geeignet sind.

Wichtige Überlegungen

  • Halten VARCHAR Längen unter 256 Zeichen. Bei Überschreitung dieses Grenzwerts wird die Spalte automatisch in SMALLTEXT konvertiert, wodurch möglicherweise das Problem mit der Schlüssellänge erneut auftritt.
  • Weitere Informationen finden Sie in dieser Ressource: „MySQL-Fehler 1170 (42000): BLOB/TEXT-Spalte wird in Schlüsselspezifikation ohne Schlüssellänge verwendet“

Das obige ist der detaillierte Inhalt vonWarum gibt MySQL bei BLOB- oder TEXT-Spalten den Fehler „Schlüsselspezifikation ohne Schlüssellänge' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn