以前は、utf8
しかありませんでした; 将来、 今utf8mb4
デフォルトの文字セットになります。utf8mb4
はデフォルトの文字セットです。
過去には、_general_ci
デフォルトの照合でした。次に_unicode_ci
(Unicode 4.0)の方が優れていて、_unicode_520_ci
(Unicode 5.20)。将来(MySQL 8.0)、デフォルトは_0900_ci_ai
になります (Unicode 9.0)。
その間、道路はMySQLの過去の過ちによって生成された甌穴でいっぱいです。そして、WP設計者は、甌穴に気付かない大きなタンクで運転しています。
MySQL 5.6は、過度に長いVARCHAR(255)
のWPインデックスと一緒にインデックスの767制限のために、多くのWPユーザーを飲み込んだ大きな甌穴でした。 utf8mb4
を使用する可能性 。あなたは5.7.17を持っていることによってそれをはるかに超えています。 (将来の8.0への移行は、それほどでこぼこではなくなります。)
つまり、5.7.7以降で新しく作成されたデータベース/テーブル/列で767の問題が発生することはありませんが、古いバージョン(5.5.3以降)から移行されたものには問題がある可能性があります。特に、何かが原因でutf8mb4に変更された場合はそうです。
何をすべきか?すべてのオプションを詳しく説明しようとすると、おそらくスペースが不足します。したがって、データの履歴、アップグレードパス(存在する場合)、現在の設定、ROW_FORMAT
を提供します。 テーブルのうち、CHARACTER SET
およびCOLLATION
列のうち、SHOW VARIABLES LIKE 'char%';
の出力
どこにいればいいの? 5.7.7以降の場合、utf8mb4
およびutf8mb4_unicode_520_ci
実用的なところならどこでも。その文字セットは絵文字とすべての中国語を提供します(utf8は提供しません)。その照合は利用可能な最高のものですが、それがどこで重要であるかに気付くのは難しいかもしれません。
注:照合名の最初の部分は、それが機能する唯一の文字セットです。それはutf8_unicode_ci
です utf8mb4
では機能しません 。