MySQL-Fehler: BLOB/TEXT-Spalte in Schlüsselspezifikation ohne Länge
Dieser Artikel befasst sich mit dem häufigen MySQL-Fehler: „BLOB/TEXT-Spalte ‚message_id‘ wird in der Schlüsselspezifikation ohne Schlüssellänge verwendet.“ Dies tritt normalerweise auf, wenn der Primärschlüssel einer Tabelle geändert wird, beispielsweise wenn er von varchar(255)
in text
geändert wird. Die Hauptursache ist die Anforderung von MySQL an eine Schlüssellänge bei der Verwendung von BLOB- oder TEXT-Spalten in eindeutigen Einschränkungen oder Primärschlüsseln.
Den Fehler verstehen
MySQLs Unfähigkeit, eindeutige Schlüsseleinschränkungen für BLOB- oder TEXT-Spalten variabler Länge ohne definierte Schlüssellänge effizient durchzusetzen, ist das Hauptproblem. Das Fehlen einer Länge erschwert die Überprüfung der Eindeutigkeit der Datenbank.
Fehler beheben
Mehrere Ansätze können dieses Problem beheben:
Entfernen Sie die BLOB/TEXT-Spalte aus dem Schlüssel: Die einfachste Lösung besteht, wenn möglich, darin, die Spalte TEXT
oder BLOB
aus dem Primärschlüssel oder der eindeutigen Indexdefinition zu entfernen.
Verwenden Sie VARCHAR: Erwägen Sie, die Spalte TEXT
oder BLOB
in VARCHAR
zu ändern und eine geeignete Länge anzugeben (bis zu 255 Zeichen). VARCHAR
bietet eine bessere Leistung für wichtige Einschränkungen.
Alternativer Primärschlüssel: Wenn weder das Entfernen noch das Konvertieren der Spalte möglich ist, wählen Sie ein anderes Feld als Primärschlüssel aus.
(Unwirksam) ALTER TABLE
mit Länge: Sie können zwar versuchen, ALTER TABLE
mit einer Schlüssellänge für TEXT
- oder BLOB
-Spalten zu verwenden, dies wird jedoch von MySQL nicht unterstützt.
Wichtige Hinweise
VARCHAR-Länge: Halten Sie VARCHAR
-Spaltenlängen unter 256 Zeichen, um die automatische Konvertierung von MySQL in SMALLTEXT
zu verhindern, wodurch der Fehler erneut ausgelöst wird.
Andere Spaltentypen: Dieser Fehler ist nicht auf die Spalten TEXT
und BLOB
beschränkt. Überprüfen Sie noch einmal, ob die Schlüssellängen für alle Spalten korrekt angegeben sind, und stellen Sie insbesondere sicher, dass VARCHAR
die Länge 255 nicht überschreitet.
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL den Fehler „BLOB/TEXT-Spalte in Schlüsselspezifikation ohne Länge' aus und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!