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.
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 )
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!