Автор Тема: Как определить время последнего изменения таблицы или базы данных.  (Прочитано 6208 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Fluke

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
Как определить средствами MySQL время последнего изменения таблицы или базы данных.

С уважением Fluke

Оффлайн NAS

  • Неопытный юзер
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2951
  • +1/-0
  • 1
    • Просмотр профиля
    • http://nhouse.ru
Дык сохраняй записи с датой. Вот и будет время.

Оффлайн Fluke

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
А другого пути нет?
Ну типа что-то вроде last updated или last modified.
А то добавлять дополнительную колонку к таблице, заполнять ее значениями, затем выбирать из нее наибольшее значение.... Не спортивно это.
Да и как быть с самой базой данных - с каждой таблицей повторять данную операцию?

С уважением.

Оффлайн NAS

  • Неопытный юзер
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2951
  • +1/-0
  • 1
    • Просмотр профиля
    • http://nhouse.ru
Ну тогда надо смотреть время модификации файла с нужной таблицей.

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
имя_таблицы.MYD
ну, будем исповедоваться?

Оффлайн Fluke

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
имя_таблицы.MYD
-----------------------------------

Это если таблица типа MyISAM, а если HEAP или BDB. Более того, я спрашивал как это сделать средствами MySQL, а не
при помощи вызова каких-нибудь системных программ.
« Последнее редактирование: 27 Сентября 2001, 21:09:11 от Fluke »

Оффлайн NAS

  • Неопытный юзер
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2951
  • +1/-0
  • 1
    • Просмотр профиля
    • http://nhouse.ru
Средствами Mysql имхо никак.

Оффлайн Fluke

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
Средствами 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

  • Любитель пива
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 464
  • +0/-0
  • 2
    • Просмотр профиля
    • http://building.msk.ru
У меня работает все правильно. Вер. 3.23.32 :)
Павел Габов
Мой Reg]life тчк building тчк msk тчк ru. Building.Msk.ru :: Коммерческая недвижимость Москвы и Подмосковья.

Оффлайн Realtor from Moscow

  • Любитель пива
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 464
  • +0/-0
  • 2
    • Просмотр профиля
    • http://building.msk.ru
Кстати, вспомнил. В мускле вроде подразделение по версиям. Типа если четное окончание - стабильная, нечетное окончание - нестабильная. Или наоборот. Вот  не работает на 3.23.33.
Павел Габов
Мой Reg]life тчк building тчк msk тчк ru. Building.Msk.ru :: Коммерческая недвижимость Москвы и Подмосковья.

Оффлайн Fluke

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
Хотел также добавить, что прямых путей обнаружить время последнего изменения самой базы данных я не нашел.
Вероятнее всего придется определять Update_time для каждой таблицы в отдельности и определять время последнего изменения самой директории в которой находятся файлы базы данных, а затем выбирать максимальное значение.

С уважением.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28