環境
MAMP: Version 4.5 (3208)
MySQL: 5.6.38
経緯
クエリログを確認したいからMySQL起動スクリプトを弄っていたらMySQLが起動しなくなった。バックアップを取っていたので戻しても起動しない。(Apacheは起動した)
エラー
さっそくエラーログを確認。途中までは順調に行っていたが
[ERROR] Fatal error: Illegal or unknown default time zone 'Asia/Tokyo'
が発生していた。
// ~ 略 ~
2024-06-10 10:17:08 35673 [Note] Server hostname (bind-address): '*'; port: 3306
2024-06-10 10:17:08 35673 [Note] IPv6 is available.
2024-06-10 10:17:08 35673 [Note] - '::' resolves to '::';
2024-06-10 10:17:08 35673 [Note] Server socket created on IP: '::'.
2024-06-10 10:17:08 35673 [ERROR] Fatal error: Illegal or unknown default time zone 'Asia/Tokyo' // ← ここ
240610 10:17:08 mysqld_safe mysqld from pid file /Applications/MAMP/tmp/mysql/mysql.pid ended
設定ファイル確認
設定を確認した。といってもいまの今まで動作していた設定項目なので正しく設定できているはず...
my.cnf
[mysqld]
default-time-zone = 'Asia/Tokyo'
対応
雑ですが、ChatGPTに相談するとタイムゾーン周りは弄っていないことも含めて相談するとタイムゾーンが壊れているかもしれないから再構築しろと言われたので、一度MySQLを起動できるようにタイムゾーンの設定をコメントアウト
my.cnf
[mysqld]
## default-time-zone = 'Asia/Tokyo'
MySQLを起動後、以下を実行
なんかめっちゃスキップされてそう。→ Warningだけ出力したパターンかな?
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Warning: Unable to load '/usr/share/zoneinfo/+VERSION' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
MySQLを落とす → my.cnfのコメントアウトを解除 → MySQL起動
起動できた。