Maison > base de données > tutoriel mysql > Pourquoi SQLite génère-t-il une erreur « Type de colonne de clé non valide pour l'index » et comment puis-je la corriger ?

Pourquoi SQLite génère-t-il une erreur « Type de colonne de clé non valide pour l'index » et comment puis-je la corriger ?

Mary-Kate Olsen
Libérer: 2024-12-15 18:44:15
original
117 Les gens l'ont consulté

Why Does SQLite Throw an

Erreur : type de colonne de clé non valide pour l'index

SQLite rencontre une erreur lors de l'indexation de colonnes avec certains types de données. Une de ces erreurs se produit lorsque vous tentez d'utiliser une colonne nvarchar(max) comme colonne clé dans un index, ce qui entraîne le message d'erreur :

Column 'key' in table 'misc_info' is of a type that is invalid for use as a key column in an index.
Copier après la connexion

Comprendre la limitation

SQLite impose une limite de taille maximale aux clés d'index, limitant leur longueur à 450 caractères. Cette limitation résulte de la contrainte de 8 000 octets par ligne sur les contraintes uniques, qui incluent à la fois la clé et toutes les colonnes indexées supplémentaires.

Solution : Modification du type de données de la colonne clé

Pour résoudre ce problème, vous pouvez modifier le type de données de la colonne key à une taille plus petite qui répond à la limite de clé d'index. La solution suivante utilise nvarchar(450), qui autorise une longueur de clé maximale de 450 caractères :

create table [misc_info]
( 
    [id] INTEGER PRIMARY KEY IDENTITY NOT NULL, 
    [key] nvarchar(450) UNIQUE NOT NULL, 
    [value] nvarchar(max) NOT NULL
)
Copier après la connexion

Considérations alternatives

Si vous stockez les caractères non Unicode ne sont pas indispensables, vous pouvez envisager de passer à varchar au lieu de nvarchar, qui augmente la longueur maximale de la clé à 900 caractères. Cependant, nvarchar est plus approprié lorsqu'il s'agit de caractères provenant de plusieurs pages de codes.

N'oubliez pas que ces limitations s'appliquent spécifiquement à l'indexation en ligne. Si vous utilisez des méthodes d'indexation externes, telles que la création d'un index de couverture sur une autre table, la limite de taille de colonne clé peut différer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal