TL;DR

  • MySQL(MariaDB)の設定ファイルの拡張子は.cnf
    • .confではだめ。includedirでもだめ。

経緯

サーバに直接インストールしていたZabbixを、Raspberry Pi4上のDockerコンテナに移行しました。以前x64上のDockerコンテナで稼働していたことがあるので構築はかんたんに済み、移行もOK。が、併せてZabbixのメジャーバージョンアップを行うとupgrade処理の途中でコケる。日本語を含むデータの変換で失敗している。

show variable like '%char%'を実行すると、system,clinentがlatinになってる… 設定ファイルにはutf8mb4を設定しているのになぜか反映されない。

設定ファイルconf/custom.conf/etc/mysql/conf.dにマウントしていたのだが、VScodede拡張子を.cnfに変えるとVScode上でファイルの認識が変わり、コンテナを再起動すると文字コードが正しく認識された。

公式サイトを見ればわかる話ではあるのですが、htmlファイルを.html,.htmのどちらでも認識するのと同じ感覚で…また、includedirに指定されたフォルダにおいていたので、読んでくれるだろうと思いこんでました。

この設定ファイルは以前Dockerコンテナで運用していた際に使用していたものでしたが、当時からバージョンアップがうまく行かない問題があり、これが原因だった可能性があります。

ちゃんと公式サイトを見ましょうというお話でした。