mysql:utf8mb4
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
mysql:utf8mb4 [2023/11/16 02:20] – nullpon | mysql:utf8mb4 [2024/01/19 14:50] (現在) – [照合順序について] nullpon | ||
---|---|---|---|
行 18: | 行 18: | ||
``` | ``` | ||
- | テーブルのデータを変換(データ量で所要時間が変化するのでテスト環境を用意してサービスに影響しないかチェックすること) | + | テーブルの文字列データを変換(データ量で所要時間が変化するのでテスト環境を用意してサービスに影響しないかチェックすること) |
```sql | ```sql | ||
行 29: | 行 29: | ||
## 照合順序について | ## 照合順序について | ||
- | mysql8系ではCOLLATE未指定の場合、`utf8mb4_0900_as_ci`となる | + | mysql8系ではCOLLATE未指定の場合、`utf8mb4_0900_ai_ci`となる |
+ | |||
+ | * ai: accent insensitive、アクセントを区別しない | ||
+ | * ci; case insensitive、大文字小文字を区別しない | ||
+ | |||
+ | * [10.3.1 照合の命名規則](https:// | ||
## クライアント側の設定 | ## クライアント側の設定 | ||
行 52: | 行 58: | ||
``` | ``` | ||
- | こうなっていた場合は、クライアント側でcharsetをutf8を明示的に指定していないか確認する(mysql8はdefaultでutf8mb4なのでどこかで設定しているはず) | + | こうなっていた場合は、クライアント側でcharsetをutf8を明示的に指定していないか確認する。mysql8のデフォルトはutf8mb4なのでどこかで明示的に設定しているはず。設定箇所はmy.cnfの`[client]`セクション、または接続時のコマンドラインオプション、アプリケーションのDB設定である |
- | + | ||
- | 設定箇所はmy.cnfの`[client]`セクション、または接続時のコマンドラインオプション、アプリケーションのDB設定である | + | |
dockerのcompose.yamlを見たところ | dockerのcompose.yamlを見たところ | ||
行 87: | 行 91: | ||
直りました。アプリケーションの設定ファイルも見直しましょう(簡単に確認できないので見落としがち) | 直りました。アプリケーションの設定ファイルも見直しましょう(簡単に確認できないので見落としがち) | ||
- | `character_set_system`はメタデータ用の文字セットでデフォルト値のutf8mb3で問題ありません(テーブル名、カラム名やインデックス名などに絵文字を入れるような狂ったことをすると問題になるかも)。 | + | `character_set_system`はメタデータ用の文字セットでデフォルト値のutf8mb3で問題ありません。まだ、変更もできません。 |
</ | </ | ||
+ | n> |
mysql/utf8mb4.1700101202.txt.gz · 最終更新: 2023/11/16 02:20 by nullpon