ホームページ > データベース > mysql チュートリアル > act_as_taggable_on を使用した MySQL データベースの移行中に「指定されたキーが長すぎます」というエラーが発生するのはなぜですか?

act_as_taggable_on を使用した MySQL データベースの移行中に「指定されたキーが長すぎます」というエラーが発生するのはなぜですか?

Susan Sarandon
リリース: 2025-01-04 07:20:35
オリジナル
324 人が閲覧しました

Why Am I Getting a

データベース移行中の MySQL キー長エラー

acts_as_taggable_on を使用して移行を生成しようとすると、次のエラーが発生する場合があります:

<br>Mysql::エラー:指定されたキーが長すぎます。最大キー長は 1000 バイトです<br>

このエラーは、タグ付けテーブル (index_taggings_on_taggable_id_and_taggable_type_and_context) に作成されているインデックスが、キーの最大長制限である 1000 バイトを超えていることを示します。 MySQL.

原因

このエラーは、特に MyISAM や InnoDB などのエンジンを使用する場合に、MySQL の制限によって発生します。これらのエンジンでは、列インデックスの定義に使用できるスペースの量に制限が課されます。 MyISAM の場合、制限は 1000 バイトですが、InnoDB の場合、制限は 767 バイトです。さらに、インデックス付き列のデータ型はスペース消費に影響し、VARCHAR 列は指定された文字制限の約 3 倍を消費します。

解決策

この問題を解決するには、次のようにします。ユーザーは、インデックス付き列のデータ型の一部のみを考慮する調整されたインデックスを作成する必要があります。たとえば、taggable_id 列のデータ型が VARCHAR(100) の場合、ユーザーは次のように指定できます。

CREATE INDEX example_idx ON taggings(taggable_id(50))
ログイン後にコピー

インデックスを taggable_id 列の最初の 50 文字に制限することで、インデックス サイズを150 バイト。これは許容制限内です。このインデックスは、taggable_id 列の最初の 50 文字を含む検索にのみ有効です。

以上がact_as_taggable_on を使用した MySQL データベースの移行中に「指定されたキーが長すぎます」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート