4

絵文字をサポートする必要がある mysql 列があります。これは、utf8 列を utf8mb4 に変換することを意味します。しかし、列にインデックスが付けられている(一意ではない)限り、私の varchar(255) は収まりません。

インデックスを保持し、utf8mb4 照合を取得するにはどうすればよいですか?

#1406 - Data too long for column 'column_name' at row 33565長さを 191 に減らそうとしましたが、残念ながら一部の行が長くなり、次のエラーが発生しました:行 33565)。

4

2 に答える 2

7

行の最大データ長に関連していると思いますが、少なくとも私が知っている文字列データ型にはそのような制限があります。これを回避するには、テーブルのデータを分離してみてください。たとえば、1 対 1 の関係を使用してテーブルを 2 つのテーブルに分割します。

最大キー長について: インデックス付きフィールドでテーブルを作成しようとしutf8mb4ましたが、キー長 191 で正常に作成されましたが、192 に設定するとエラーがスローされました - 指定されたキーが長すぎます。キーの最大長は 767 バイトです。

于 2013-11-22T07:25:13.513 に答える
4

インデックスを削除することになりました。

パフォーマンスに悪影響がある場合nは、現在の列の最初の文字 (最大 191、ただしおそらく 10 ~ 20 程度) のみを含む 2 番目のインデックス付き列を追加できます。

191 文字の制限は、キーの最大長が 767 バイトであるためです。4 バイト文字の場合、これは最大 191 文字 ( floor(767/4) = 191) を意味します。

于 2013-11-22T15:30:49.500 に答える