ユーザ用ツール

サイト用ツール


mysql:utf8mb4

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
mysql:utf8mb4 [2023/11/16 02:10] nullponmysql:utf8mb4 [2024/01/19 14:50] (現在) – [照合順序について] nullpon
行 9: 行 9:
  
 ```sql ```sql
-ALTER DATABASE <db name> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;+ALTER DATABASE <db_name> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
 ``` ```
  
-Tableのdefault charsetを変更+テーブルのdefault charsetを変更
  
 ```sql ```sql
-ALTER TABLE <table name> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;+ALTER TABLE <table_name> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
 ``` ```
  
-データを変換(データ量で所要時間が変化するのでテスト環境を用意してサービスに影響しないかチェックすること)+テーブルの文字列データを変換(データ量で所要時間が変化するのでテスト環境を用意してサービスに影響しないかチェックすること)
  
 ```sql ```sql
-ALTER TABLE <table name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;+ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
 ``` ```
 +
 +テーブルの変更はテーブル毎に実行する。文字列カラムのないテーブルに実行しても問題ない。全テーブルに対してスクリプトで一括実行するといいかも。
 +
  
 ## 照合順序について ## 照合順序について
  
-mysql8系ではCOLLATE未指定の場合、`utf8mb4_0900_as_ci`となる+mysql8系ではCOLLATE未指定の場合、`utf8mb4_0900_ai_ci`となる 
 + 
 +* ai: accent insensitive、アクセントを区別しない 
 +* ci; case insensitive、大文字小文字を区別しない 
 + 
 +* [10.3.1 照合の命名規則](https://dev.mysql.com/doc/refman/8.0/ja/charset-collation-names.html) 
  
 ## クライアント側の設定 ## クライアント側の設定
行 49: 行 58:
 ``` ```
  
-こうなっていた場合は、クライアント側でcharsetをutf8を明示的に指定していないか確認するmysql8はdefaultでutf8mb4なのでどこかで設定しているはず) +こうなっていた場合は、クライアント側でcharsetをutf8を明示的に指定していないか確認するmysql8のデフォルトはutf8mb4なのでどこかで明示的に設定しているはず設定箇所はmy.cnfの`[client]`セクション、または接続時のコマンドラインオプション、アプリケーションのDB設定である
- +
-設定箇所はmy.cnfの`[client]`セクション、または接続時のコマンドラインオプション、アプリケーションのDB設定である+
  
 +dockerのcompose.yamlを見たところ
  
 ``` ```
行 59: 行 67:
     command: ["mysql", "-u", "root", "-h", "mysql", "--default-character-set=utf8"]     command: ["mysql", "-u", "root", "-h", "mysql", "--default-character-set=utf8"]
     profiles:     profiles:
 +      - one-off
 ``` ```
  
行 82: 行 91:
 直りました。アプリケーションの設定ファイルも見直しましょう(簡単に確認できないので見落としがち) 直りました。アプリケーションの設定ファイルも見直しましょう(簡単に確認できないので見落としがち)
  
-`character_set_system`はメタデータ用の文字セットでデフォルト値のutf8mb3で問題ありません(テーブル名カラム名やインデックス名などに絵文字を入れるような狂ったことをすると問題になるか+`character_set_system`はメタデータ用の文字セットでデフォルト値のutf8mb3で問題ありません。まだ変更できません
 </markdown> </markdown>
 +n>
mysql/utf8mb4.1700100620.txt.gz · 最終更新: 2023/11/16 02:10 by nullpon