41271


mariadbの「character_set_server」をutf8に設定すべく、DB内で以下のコマンドを打ちました。

[code]

    > set character_set_server=utf8;
    > show variables like 'char%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | utf8                       |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | utf8                       |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    
[/code]

しかしながら、一度exitしたのち、再度確認したところ、  
「character_set_server」は「latin1」となってしまいます。

また、「/etc/myconf.d」の[mysqld]内に、「character-set-
server=utf8」を記載していますが、DB内の文字コードを確認したところ、「character_set_server」が「latin1」となります。

原因とその解消方法を教えていただきたく、質問させていただきます。

◆ 追記  
該当テーブルの文字コードを確認した結果は以下の通りです。

[code]

    > show create table [テーブル名]
    CREATE TABLE `[テーブル名]` (
      // カラムのため、記載省略
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    
[/code]


CC BY-SA 3.0
2018-01-28T01:27:12.503
41252
2018-01-29T01:30:27.160
2018-01-28T01:33:21.373
25428
25428
question
mariadb
mariadb の 「character_set_server」がutf8にならない


  1. mysql5.6の話ですが、SET文はデフォルトではセッションでのみ有効なようです。

<https://dev.mysql.com/doc/refman/5.6/ja/set-statement.html>

  2. utf8は旧型式です。utf8mb4を使用しましょう。  
utf8では日本語第三水準第四水準に登場するutf8時に4Byteになる約400漢字が非対応です。

character-set-server=utf8mb4  
default-character-set=utf8mb4

  3. cnfファイルの再読み込みには、mariadbを再起動する必要がありそうです。  
複数回設定している場合は、最後の設定が有効になるので注意しましょう。  
!includedir /etc/my.cnf.dなど記述されている場合は、その下も確認する必要があります。

systemctl restart mariadb.service


CC BY-SA 3.0
2018-01-29T01:30:27.160
41271
2018-01-29T01:30:27.160
25396
41252
answer