5

テキスト列の MySQL の UNI キーは、一意性をテストするために最初の 255 文字のみを調べているようです。同じ 255 文字で始まる 2 つの文字列がある場合、両方をこのテーブルに追加することはできません。

これを克服する方法はありますか?

このフィールドにキーを設定した理由は、パフォーマンスのためではなく、クエリに関係なく一意性を確保するためです (それらは私の管理下にありません)。

4

1 に答える 1

3

MySQL 4.1.2 / 1000 バイト (InnoDB の場合は 767) より前のバージョンでは、キーの長さが 255 シンボルを超える MySQL のテキスト フィールドにインデックスを付けることはできません。これをネイティブに克服することはできません。

最も簡単な解決策は、md5 ハッシュを評価して別の列に格納し、それによって一意のインデックスを作成し、md5 を自動的に挿入するトリガー before insert&を作成することです。before updateMySQL サーバー 4.x を実行している場合は、自分で処理する必要があります (トリガーが使用できないため)。

于 2013-09-18T12:52:27.703 に答える