RDS(MySQL)でutf8からutf8mb4に変更する

以下の方法で進める。

 

1. パラメータ変更
2. RDS再起動
3. ALTER DATABASE DBnoNamae CHARACTER SET utf8mb4;
 (デフォルトで utf8mb4_general_ci だったが照合順序を指定する場合)ALTER DATABASE DBnoNamae CHARACTER SET utf8mb4 collate utf8mb4_general_ci
4. RDS再起動
 (ROW_FORMATがDYNAMICでない場合)ALTER TABLE テーブル名 ROW_FORMAT=DYNAMIC;
5. テーブルのバックアップを取る
6. ALTER TABLE teburunonamae CONVERT TO CHARACTER SET utf8mb4;
7. 寿司の登録。パパ、ハハのチェック。AとaとAの違い。

 

 

パラメータは以下を指定。

Amazon RDS上のMySQLをutf8からutf8mb4に変更する手順 | Playful IT - Designing and Engineering "遊び心"駆動開発

character_set_client:utf8mb4
character_set_connection:utf8mb4
character_set_database:utf8mb4
character_set_results:utf8mb4
character_set_server:utf8mb4
innodb_large_prefix:1
innodb_file_format:Barracuda
innodb_file_per_table:1
skip-character-set-client-handshake:1

 

 

文字コードの確認方法

MySQL 文字コード確認 - Qiita

mysql> show variables like '%char%';

mysql> SHOW VARIABLES LIKE 'coll%';

 

MySQLで文字コードに苦戦している人向けのメモ - Qiita

SHOW VARIABLES LIKE 'character\_set\_%';

character_set 解説
character_set_client クライアントが送ってくるとサーバーが想定している文字コード
character_set_connection クエリを実行する文字コード
character_set_database 使っているデータベースの文字コード。変える必要はないしsetで変えてはいけない。
character_set_filesystem ファイル名の文字コード。デフォルトでいい
character_set_results クライアントに結果を返すときの文字コード
character_set_server 新規にデータベースを作るときの文字コード。設定しておくと楽。いろいろ継承されるが上書きできる。
character_set_system テーブル名とかを保存する文字コード。デフォルトでいい

 

skip-character-set-client-handshake を有効にしない場合、latin1が残るので有効にする必要あり

Amazon RDS(Aurora)で日本語文字列や絵文字を使えるようにする | 分析ノート

 

「skip-character-set-client-handshake」は「character_set_server」の値を参照する

文字コード確認設定 | スマップスオフィシャル | スマップスオフィシャル

 

 

 

参考

Amazon Aurora MySQL 5.7 互換の文字コードをutf8mb4にする - karakaram-blog

 

寿司

[MySQL] 文字コード問題 -みんな大好き寿司ビール🍣🍺- - Qiita