「default_time_zone = 'Asia/Tokyo'」って設定したのに、
MariaDBが「Unknown time zone ‘Asia/Tokyo’」って怒って止まったこと、ありませんか?
実はこれ、あなたが悪いわけでもサーバーが壊れているわけでもなく、
MariaDBがまだ「Tokyoという人」を知らないだけなんです。
1. そもそもMariaDBはUTCが基本
MariaDB(MySQL系)は、世界共通で使うために内部ではUTC(協定世界時)を基準に動いています。
日本時間(JST)を使うには、システム側で「Tokyo=JSTだよ」と教えてあげる必要があるんです。
default_time_zone = 'Asia/Tokyo'
でも、MariaDBはデフォルトでは「Asia/Tokyo」の意味を知らない。 結果、こんなエラーになります👇
ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Tokyo'
2. 解決策:「隠し呪文」を唱えるだけ
この一行を実行すればすべて解決します👇
mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql -u root mysql
このコマンドは、OSが持っているタイムゾーン情報をMariaDBに取り込む魔法です。
つまり「TokyoはUTC+9の場所だよ」と教えてあげる作業。
最近のMariaDBでは名前が変わっています:
mariadb-tzinfo-to-sql /usr/share/zoneinfo | sudo mariadb -u root mysql
実行後にMariaDBを開いて確認してみましょう。
SHOW VARIABLES LIKE '%time_zone%';
出力例:
+------------------+------------+
| Variable_name | Value |
+------------------+------------+
| system_time_zone | JST |
| time_zone | Asia/Tokyo |
+------------------+------------+
これで、MariaDBが無事に「Tokyo」を理解しました🎉
3. なぜこの呪文が必要なのか?
/usr/share/zoneinfo は、OSが持っているタイムゾーン定義ファイルです。 MariaDBはそれを直接読めないので、mysql_tzinfo_to_sql が 「SQL文に変換して取り込む」役割を果たします。
つまり仕組みとしては:
[OSのzoneinfoファイル] → [SQLに変換] → [MariaDBのmysql.time_zoneテーブルへ登録]
これを一度やっておくと、default_time_zone='Asia/Tokyo' が正常に動作します。
4. 永続化の設定
一度取り込んだら、/etc/my.cnf.d/server.cnf に 次の設定を追記しておきましょう。
[mysqld]
default_time_zone = 'Asia/Tokyo'
そしてMariaDBを再起動:
sudo systemctl restart mariadb
確認コマンド:
SELECT NOW(), @@global.time_zone, @@session.time_zone;
結果例:
+---------------------+--------------------+---------------------+
| NOW() | @@global.time_zone | @@session.time_zone |
+---------------------+--------------------+---------------------+
| 2025-10-31 22:00:00 | Asia/Tokyo | Asia/Tokyo |
+---------------------+--------------------+---------------------+
これでMariaDB・PHP・WordPressのすべてがJST(東京時間)で統一されます。
5. まとめ:「隠し呪文は公式だった」
mysql_tzinfo_to_sql は、実は「隠し呪文」でもなんでもなく、 英語版マニュアルにだけひっそり書かれている正式手順なんです。
でも日本語サイトではほとんど触れられていないので、 「Asia/Tokyo を設定したら止まった💥」という人が後を絶たないのが現状。
というわけで——
💬 default_time_zone=’Asia/Tokyo’ で止まった人は、
この呪文を唱えるべし:
mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql -u root mysql
たった一行で、あなたのMariaDBは「Tokyo」を覚えます🌏✨
📩 info@hd0.biz
この記事は「masaやん」によって作成されました。


コメント