質問: $users->find() ->where([ 'email' => $this->request->data['email'], 'password' => $this->request->data['password'] ]) ->first(); ``` ### 試したこと 調べたところ「mysql のタイムゾーン周りの設定の不備」とおっしゃっているページが多くヒットし ``` mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql -p ``` というようなコマンドがよく出てくるのですが、このコマンドをどこで実行すればいいのか、そもそも問題点はそこなのかなど、全く理解できておらず少しでも手がかりが欲しい状況です。 当方環境構築からアプリを作成するのが初めてでして、質問が的外れの可能性もございますが何卒ご容赦ください。 ### 補足情報(FW/ツールのバージョンなど) * MAMP * macOS * cakephp3 * mysql 5.7.23 * php 7.2.10
回答: これの原因は、MySQL 上にタイムゾーンに関する情報がないため、Asia/Tokyo というタイムゾーンを理解できないことが理由です。 ですので対策としては MySQL にタイムゾーンの情報を追加することになります。 そのために MySQL では、OS の持っているタイムゾーン情報(Unix 系の場合、/usr/share/zoneinfo/ にあります)を、加工して取り込む仕組みを用意しています。それが mysql_tzinfo_to_sql スクリプトです。 このスクリプトにより、タイムゾーン情報を追加するための SQL スクリプトが生成されますので、それを MySQL のクライアントプログラムを経由して流し込む、というのが ``` mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql -p ``` でやっていることになります。 なので、これを実行するのは * サーバー上で * mysql クライアントが実行できる(通常、OS にログインする際に使っているユーザーで問題ないはずです) のであれば、サーバー上のどこからであってもよいです。端末を起動した直後の場所(ログインユーザーのホーム(~))でいいでしょう。