Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hello, I am trying to get the date when a table in a MySQL database has been changed. Table is MyISAM. This approach is returning nothing. Any suggestion?

#!/usr/bin/perl -w use warnings; use strict; use CGI qw(-utf8); use CGI::Carp qw(fatalsToBrowser); use Data::Dumper qw(Dumper); use DBI; print "Content-type: text/html\n\n"; my $db = ""; my $host = "localhost"; my $user = ""; my $pass = ""; my $table = '2qPwZ7vr'; my $dbh = DBI->connect( "DBI:mysql:$db:$host", $user, $pass ); my $sql = "SHOW TABLE STATUS FROM your_database LIKE ?"; my $sth = $dbh->prepare($sql); $sth->execute($table); print "Last modified: "; while ( my $row = $sth->fetchrow_hashref ) { print Dumper "> " . $row; }

Replies are listed 'Best First'.
Re: Get timestamp of last modify of MySQL table
by LanX (Saint) on Mar 05, 2022 at 19:03 UTC

      Thank you. This brought me to the solution:

      my $sql = "SELECT UPDATE_TIME FROM information_schema.tables WHERE TAB +LE_NAME = 'name_of_table'";
        Beware,

        > Timestamps are not persisted when the server is restarted or when the table is evicted from the InnoDB data dictionary cache.

        And given that file time stamps (on the system) are unreliable and fragile, I suggest if there is a "time" you want to track reliably/correctly and precision is not a priority, using time stamp fields in your tables is going to give you the best and most reliable result.