ぷちスタディ@AWS RDS 文字セットをutf8mb4に変更する

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)

最後までお読みいただきありがとうございました。

参考URL: Amazon RDS上のMySQLをutf8からutf8mb4に変更する手順

Amazon RDS の MySQL で UTF-8 のデータベースを作る : まだプログラマーですが何か?

同じカテゴリーの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です