こんにちは。ふわふわしょうちゃんです。
久しぶりに過去に個人開発したWEBサービス【danceroot.net】をローカルで動かそうとしたのですが、PC環境を一新していたので、流石に動かず。
とりあえず、Asia/Tokyoタイムゾーンがねーよ。というエラーが出たので、以下、手順を残しておきます。
タイムゾーンを検索し、確認
比較的、新しいバージョンのXAMPPには、MariaDBのmysqlテーブル内にAsia/Tokyoのタイムゾーンデータが存在しないようです。
ですので、CakeなどのフレームワークにAsia/Tokyoを指定すると、エラーが起きてしまいます。
念のため、phpmyadminから、タイムゾーンデータが本当にないのか、確認しておきます。
データベースは「mysql」を選択しておいてください。
command
select * from mysql.time_zone;
タイムゾーンのデータが存在しないのを確認できました。
【XAMPP】MySQLサイトからタイムゾーンをダウンロード
XAMPP環境の場合、MySQLのサイトからSQLファイルをダウンロードしてください。
以下、URLです。
https://dev.mysql.com/downloads/timezones.html
赤枠の「timezone_2020f_posix_sql.zip」をダウンロードし、解凍後、SQLファイルをインポートします。
ここでは、phpmyadminを使用します。
mysqlデーターベース選択後、「インポート」タグを選択し、先ほどのSQLファイルを選択し、実行してください。
無事にインポートが完了しました。
【Linux】mysql_tzinfo_to_sqlコマンドで追加する
Linuxの場合、新規にMySQLをyum経由などで、インストールした際にも、タイムゾーンのセットアップをする必要があります。
以下のコマンドを実行します。※MySQLログインをしていない状態
command
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u ユーザー名 mysql -pパスワード
まとめ
フレームワークを使用するにあたり、タイムゾーンの設定は、必ず初期設定時に行うケースが多いと思います。
でなければ、登録日時とか、時刻がずれている状態になるので、運用できません。
フレームワークに慣れていない方だと、フレームワーク側の問題だと勘違いしがちなエラーですが、フレームワークはミドルウェア群とも密接に関係しているので、少し広い視点で捉えてみると良いかもしれません。
じゃ、そーゆうことで!!