Heim >Datenbank >MySQL-Tutorial >Warum gibt SQLite den Fehler „Ungültiger Schlüsselspaltentyp für Index' aus und wie kann ich ihn beheben?
Fehler: Ungültiger Schlüsselspaltentyp für Index
SQLite stößt auf einen Fehler beim Indizieren von Spalten mit bestimmten Datentypen. Ein solcher Fehler tritt auf, wenn versucht wird, eine nvarchar(max)-Spalte als Schlüsselspalte in einem Index zu verwenden, was zur folgenden Fehlermeldung führt:
Column 'key' in table 'misc_info' is of a type that is invalid for use as a key column in an index.
Understanding the Limitation
SQLite legt eine maximale Größenbeschränkung für Indexschlüssel fest und beschränkt deren Länge auf 450 Zeichen. Diese Einschränkung ergibt sich aus der Einschränkung von 8000 Byte pro Zeile bei eindeutigen Einschränkungen, die sowohl den Schlüssel als auch alle zusätzlichen indizierten Spalten umfasst.
Lösung: Ändern des Datentyps der Schlüsselspalte
Um dieses Problem zu beheben, können Sie den Datentyp der Spalte Schlüssel auf eine kleinere Größe ändern, die dem Indexschlüssellimit entspricht. Die folgende Lösung verwendet nvarchar(450), was eine maximale Schlüssellänge von 450 Zeichen ermöglicht:
create table [misc_info] ( [id] INTEGER PRIMARY KEY IDENTITY NOT NULL, [key] nvarchar(450) UNIQUE NOT NULL, [value] nvarchar(max) NOT NULL )
Alternative Überlegungen
Beim Speichern Nicht-Unicode-Zeichen sind nicht unbedingt erforderlich. Sie können stattdessen auch auf varchar umsteigen nvarchar, wodurch die maximale Schlüssellänge auf 900 Zeichen erhöht wird. Allerdings ist nvarchar besser geeignet, wenn es um Zeichen aus mehreren Codepages geht.
Beachten Sie, dass diese Einschränkungen speziell für die Inline-Indizierung gelten. Wenn Sie externe Indizierungsmethoden verwenden, z. B. das Erstellen eines abdeckenden Index für eine andere Tabelle, kann die Größenbeschränkung für Schlüsselspalten abweichen.
Das obige ist der detaillierte Inhalt vonWarum gibt SQLite den Fehler „Ungültiger Schlüsselspaltentyp für Index' aus und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!