Общие > Базы данных
Как определить время последнего изменения таблицы или базы данных.
Fluke:
имя_таблицы.MYD
-----------------------------------
Это если таблица типа MyISAM, а если HEAP или BDB. Более того, я спрашивал как это сделать средствами MySQL, а не
при помощи вызова каких-нибудь системных программ.
NAS:
Средствами Mysql имхо никак.
Fluke:
Средствами Mysql имхо никак.
__________________
С уважением, Алексей Нестеренко.
А вот и "как". Покопался я тут в документации и нашел способ.
#!/usr/bin/perl -w
use DBI;
use strict;
my ($dbh, $sth, $hash_ref);
$dbh = DBI->connect("DBI:mysql:имя_базы", \'имя_таблицы\', \'пароль\') or die $DBI::errstr;
$sth = $dbh->prepare("SHOW TABLE STATUS FROM имя_базы LIKE \'имя_таблицы\'");
$sth->execute() or die $sth->errstr();
$hash_ref = $sth->fetchrow_hashref;
print $hash_ref->{\'Update_time\'}."\\n";
$sth->finish();
$dbh->disconnect();
exit(0);
В Unix все работает OK (build 3.23.41). А вот в Windows (build 3.23.33) возникла un petit probleme. Поле Update_time изменяется только если удаляются все данные из таблицы при помощи delete from имя_таблицы или truncate, а вот insert и update в Windows 95 для MySQL 3.23.33 не меняет это поле. Может у кого стоит другой сервер или Windows, узнать глюк ли это системы или сервера, а может так и надо под Windows?
С уважением
Realtor from Moscow:
У меня работает все правильно. Вер. 3.23.32 :)
Realtor from Moscow:
Кстати, вспомнил. В мускле вроде подразделение по версиям. Типа если четное окончание - стабильная, нечетное окончание - нестабильная. Или наоборот. Вот не работает на 3.23.33.
Навигация
Перейти к полной версии