データベース移行中の 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 サイトの他の関連記事を参照してください。