ホームページ > データベース > mysql チュートリアル > MySQL エラーを解決する方法:「指定されたキーが長すぎます。最大キー長は 1000 バイトです」?

MySQL エラーを解決する方法:「指定されたキーが長すぎます。最大キー長は 1000 バイトです」?

Mary-Kate Olsen
リリース: 2025-01-03 09:10:39
オリジナル
404 人が閲覧しました

How to Solve MySQL Error:

「Mysql::Error: 指定されたキーが長すぎます。最大キー長は 1000 バイトです」のトラブルシューティング

次のコマンドを実行しようとするとコマンド:

script/generate acts_as_taggable_on_migration
rake db:migrate
ログイン後にコピー

error:

Mysql::Error: Specified key was too long; max key length is 1000 bytes: CREATE INDEX `index_taggings_on_taggable_id_and_taggable_type_and_context` ON `taggings` (`taggable_id`, `taggable_type`, `context`)
ログイン後にコピー

原因

このエラーは、MySQL のストレージ エンジンによってインデックスのサイズに課せられた制限が原因で発生します。 Ruby on Rails で一般的に使用される MyISAM エンジンでは、インデックス サイズが 1,000 バイトに制限されています。

解決策

この問題を解決するには、次の戦略を検討してください。

  • インデックス サイズの削減:インデックスを作成し、実用性を低下させることなく短縮できるものがあるかどうかを判断します。たとえば、列にフルネームが格納されている場合は、最初の 50 文字までを切り捨てることを検討してください。
  • パーティション インデックス: インデックスを列のサブセット上の個別のインデックスに分割します。例:
CREATE INDEX example_idx_id ON YOUR_TABLE(taggable_id)
CREATE INDEX example_idx_type ON YOUR_TABLE(taggable_type)
ログイン後にコピー
  • ストレージ エンジンの変更: より大きなインデックス サイズ (最大 767 バイト) をサポートする InnoDB への移行を検討してください。ただし、これには追加の構成が必要な場合があり、すべてのアプリケーションに適しているわけではない可能性があります。

追加の構成

データベースのエンコード設定で示されているように、データベースはlatin1 文字エンコーディングを使用するように構成されています。これにより、UTF-8 エンコーディングを使用する列のインデックスの有効性が制限される可能性があります。インデックスのパフォーマンスを向上させるには、データベースを UTF-8 エンコードに変換することを検討してください。

以上がMySQL エラーを解決する方法:「指定されたキーが長すぎます。最大キー長は 1000 バイトです」?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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