【MySQL】データベースやテーブルの最終更新日時を取得しようとするとNULLになる(information_schema.tables update_time null)

データベースやテーブルの最終更新日時を取得するときに、以下のようなSQLを発行することがあると思います。

SELECT
    MAX(UPDATE_TIME)
FROM
    information_schema.tables
WHERE
    table_schema = 'mydatabase'

しかし、(データベースやテーブルが存在し、かつinformation_schema.tablesテーブルが存在するにもかかわらず)結果がNULLになる場合があります。

原因:オンメモリテーブルなので再起動時に消える

先に結論を書くと「information_schema.tables」は、オンメモリテーブルなので、MySQLを再起動すると、内容がすべて消えます。

なので、サーバを再起動した後や、MySQLを再起動した直後は、すべての「update_time」が「NULL」になります。

対策

対策といっても、もしNULLなら現在日時を使うとか、やりたいことに応じて異なってくると思います。

ただ、「再起動をしたらUPDATE_TIMEはNULLになる」というのを知っていると何かの手助けになるかもしれないです。

参考になれば幸いです。

質問・コメントなどあると嬉しいです