Когда мой стол последний раз менялся? - PullRequest
3 голосов
/ 02 марта 2012

Я использую mysql 5.1.41-3ubuntu12.10 и хотел бы знать, когда в последний раз моя таблица изменялась (или создавалась, если никогда не изменялась).

SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = SCHEMA();
дает CREATE и время последнего обновления, но не AFAICT в последний раз ALTER.

1 Ответ

6 голосов
/ 02 марта 2012

Ответ зависит в некоторой степени от механизма хранения.Самый надежный индикатор того, когда таблица была изменена в последний раз, - это время изменения в файле .frm в каталоге данных.Этот файл должен обновляться каждый раз, когда вы изменяете таблицу, даже для таких изменений, как обновление столбца по умолчанию, которые не требуют перестроения таблицы.

information_schema.tables.create_time немного ошибочно, так как это значение фактически изменяетсябольшую часть времени, когда вы меняете таблицу.Тем не менее, это одна из областей, где механизм хранения имеет значение.Если вы делаете изменение без перестроения (например, изменяете значение столбца по умолчанию) в InnoDB, то information_schema.tables.create_time обновляется, но если вы делаете то же самое в MyISAM, information_schema.tables.create_time не обновляется.В обоих случаях файл .frm должен быть обновлен, поэтому я рекомендую вам проверить временную метку файла для получения наиболее точных данных, если у вас есть к ней доступ.

...