AWS RDS の文字セットが「latin1」だったのでmysqlコマンドでデータベースに入ってコマンドから変更しようとしましたが受け付けてくれません。RDSはAmazon独自のGUIによる変更が必要でした。ここにパラメーターグループを新規作成して文字セットを →「utf8mb4」に変更した手順をめも。
Amazon RDS上のMySQLをutf8からutf8mb4に変更する手順
上記サイトの手順に従って文字セットをGUIから変更しようとしましたが、
保存中のエラー: Cannot modify a default parameter group. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterValue; Request ID
で変更できませんでした。エラーメッセージを元に更に検索するとデフォルトのパラメーターグループは変更できないとのこと。新規パラメーターグループを作成して文字セットを変更してRDSの「変更」ボタンから変更する必要がありました。
「保存中のエラー: Cannot modify a default parameter group.」が表示され、RDSインスタンスのパラメータグループの値を変更できない時の対処
変更前
mysql> show variables like "chara%"; +--------------------------+-------------------------------------------+ | Variable_name | Value | +--------------------------+-------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /rdsdbbin/mysql-5.7.40.R2/share/charsets/ | +--------------------------+-------------------------------------------+ 8 rows in set (0.00 sec)
今回は「mysql-57」というパラメーターグループを作成して「アクション」から文字セットを「utf8mb4」に変更しました。
パラメーター | 変更前 | 変更後 |
---|---|---|
character_set_client | utf8 | utf8mb4 |
character_set_connection | utf8 | utf8mb4 |
character_set_database | latin1 | utf8mb4 |
character_set_filesystem | binary | binary |
character_set_results | utf8 | utf8mb4 |
character_set_server | latin1 | utf8mb4 |
character_set_system | utf8 | utf8 |
AWSのRDS のGUI から「パラメータグループの作成」。
.
パラメーターの編集をしてGUIから「utf8mb4」に変更します。
.
作成したパラメータグループをRDS に「変更」を加えます。
.
変更後、RDSを再起動したので変更前に作ったデータベースはドロップして作り直しです。(T_T)
drop database sample_db_01;
character_set_client,character_set_connection,character_set_results は ElasticBeanstalk アプリケーションサーバーの /etc/my.cnf を設定する必要がありました。
sudo vi /etc/my.cnf
以下追記)
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqldump]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
lower_case_table_names=1
データベースを再作成。
create database sample_db_01 default character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.01 sec)
grant all on sample_db_01.* to sampleUser@`%` identified by 'password';
Query OK, 1 row affected (0.01 sec)
flush privileges; Query OK, 0 rows affected (0.00 sec)
変更後、文字セットが「utf8mb4」であることを確認します。
MySQL [(none)]> show variables like "chara%";
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.7.40.R2/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)
最後までお読みいただきありがとうございました。