ホームページ >データベース >mysql チュートリアル >SQLite が「インデックスのキー列の型が無効です」エラーをスローするのはなぜですか?それを修正するにはどうすればよいですか?
エラー: インデックスのキー列の型が無効です
特定のデータ型で列のインデックスを作成するときに SQLite でエラーが発生します。このようなエラーの 1 つは、nvarchar(max) 列をインデックスのキー列として使用しようとすると発生し、次のようなエラー メッセージが表示されます。
Column 'key' in table 'misc_info' is of a type that is invalid for use as a key column in an index.
制限について
SQLite はインデックス キーに最大サイズ制限を課し、長さを 450 文字に制限します。この制限は、キーと追加のインデックス付き列の両方を含む一意制約の行あたり 8000 バイトの制約から発生します。
解決策: キー列のデータ型を変更する
この問題を解決するには、key 列のデータ型をインデックス キーを満たすより小さいサイズに変更します。限界。次のソリューションでは、nvarchar(450) を使用します。これにより、キーの最大長は 450 文字になります。
create table [misc_info] ( [id] INTEGER PRIMARY KEY IDENTITY NOT NULL, [key] nvarchar(450) UNIQUE NOT NULL, [value] nvarchar(max) NOT NULL )
代替考慮事項
非 Unicode 文字は必須ではありません。代わりに varchar に切り替えることを検討してください。 nvarchar の最大キー長が 900 文字に増加します。ただし、複数のコード ページの文字を扱う場合は、nvarchar の方が適切です。
これらの制限は、インライン インデックス作成に特に適用されることに注意してください。別のテーブルにカバーインデックスを作成するなど、外部インデックス作成方法を利用する場合、キー列のサイズ制限が異なる場合があります。
以上がSQLite が「インデックスのキー列の型が無効です」エラーをスローするのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。