MariaDBではデフォルトの文字コードがutf8となっていますが、これでは日本語を上手く扱うことができません。
そのため、utf8mb4に変更する必要があります。この記事では、その方法を説明します。
現状の文字コードを確認
以下のSQL文で確認できます。
MariaDB [(none)]> show variables like 'char%'; +--------------------------+----------------------------+ | 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 | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
「utf8」と書れている場合は、文字コードがutf8になっています。
my.cnfを修正
viコマンドで/etc/my.cnfを開きます。
sudo vi /etc/my.cnf
以下を追記します。
[mysqld] character-set-server=utf8mb4 [client] default-character-set=utf8mb4
MariaDBを再起動
上で行った設定を反映するため、MariaDBの再起動を行います。
sudo systemctl stop mariadb sudo systemctl start mariadb
文字コードを再度確認
MariaDB [(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 | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
文字コードがutf8mb4に変わっているはずです。
なお、character_set_system
に関してはutf8のままで問題ありません。
既存のデータベース、テーブルがある場合は設定を変更
最後に、すでにDBやテーブルを作成している場合は、データベースやテーブルの設定を変更する必要があります。
・DBの文字コード変更
MariaDB [(none)]> ALTER DATABASE {データベース名} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
・テーブルの文字コード変更
ALTER TABLE {テーブル名} CONVERT TO character SET utf8mb4 COLLATE utf8mb4_unicode_ci;
以上で、文字コードの設定は完了となります。