💽
Cakephp3でAn Internal Error Has Occuredのエラー画面の解決方法
はじめに
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と接続することもできました。
おわりに
はじめてのことも多くて時間がかかってしまいましたが、無事にできてよかったです。やっぱりログを確認することは大切ですね。
Discussion