テキスト列の MySQL の UNI キーは、一意性をテストするために最初の 255 文字のみを調べているようです。同じ 255 文字で始まる 2 つの文字列がある場合、両方をこのテーブルに追加することはできません。
これを克服する方法はありますか?
このフィールドにキーを設定した理由は、パフォーマンスのためではなく、クエリに関係なく一意性を確保するためです (それらは私の管理下にありません)。
MySQL 4.1.2 / 1000 バイト (InnoDB の場合は 767) より前のバージョンでは、キーの長さが 255 シンボルを超える MySQL のテキスト フィールドにインデックスを付けることはできません。これをネイティブに克服することはできません。
最も簡単な解決策は、md5 ハッシュを評価して別の列に格納し、それによって一意のインデックスを作成し、md5 を自動的に挿入するトリガー before insert
&を作成することです。before update
MySQL サーバー 4.x を実行している場合は、自分で処理する必要があります (トリガーが使用できないため)。