💽

Cakephp3でAn Internal Error Has Occuredのエラー画面の解決方法

2022/03/14に公開

はじめに

Cakephpの学習でMySQLと接続するときにAn Internal Error Has Occuredが表示されたので、解決までの流れを備忘録をかねて作成しました。

1.原因調査

logs/error.logを確認すると以下の記述あり。

 General error: 1298 Unknown or incorrect time zone: 'Asia/Tokyo'

どうやらtime zoneが関係している様子です。

現在のタイムゾーンを確認

下記のSQL文で確認できます。

mysql> show variables like '%time_zone%';

すると以下のように表示されました。

system_time_zone :
time_zone : SYSTEM

time_zoneの初期値は'SYSTEM'となっており、サーバーのタイムゾーンがシステムのタイムゾーンと同じことを表しているみたいです。

MySQL タイムソーンデータの確認

タイムゾーンの設定には、time_zoneというテーブルにデータが入っている必要があります。
以下のコマンドで確認します。

mysql> select * from mysql.time_zone;

何も表示されず空でした。
どうやらMySQLのtime_zoneが設定されていないのが原因みたいです。

2.解決方法

まずは、タイムゾーンデータのインポートを行います。

インポートデータのダウンロード

ダウンロードサイトからダウンロードできます。

mysql -u root -p -Dmysql < /ダウンロードしたファイルのあるpath/timezone_posix.sql

my.iniファイルの編集

以下のコードを追加します。

[mysqld]
default-time-zone = 'Asia/Tokyo'

MySQLの再起動

MySQLの再起動をすると設定が反映されます。

3.設定が反映されているかの確認

system_time_zone :
time_zone : Asia/Tokyo

どうやら設定が反映されている様子です。
実際にMySQLと接続することもできました。

おわりに

はじめてのことも多くて時間がかかってしまいましたが、無事にできてよかったです。やっぱりログを確認することは大切ですね。

参考にした資料

[MySQL]タイムゾーンを変更する
MySQLリファレンス
MySQLでタイムゾーンを設定する

Discussion