Heim >Datenbank >MySQL-Tutorial >Warum gibt SQLite den Fehler „Ungültiger Schlüsselspaltentyp für Index' aus und wie kann ich ihn beheben?

Warum gibt SQLite den Fehler „Ungültiger Schlüsselspaltentyp für Index' aus und wie kann ich ihn beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-15 18:44:15118Durchsuche

Why Does SQLite Throw an

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!

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