从元数据中检索 MySQL 行创建的时间戳?
Posted
技术标签:
【中文标题】从元数据中检索 MySQL 行创建的时间戳?【英文标题】:Retrieving timestamp of MySQL row creation from meta data? 【发布时间】:2013-05-27 00:15:54 【问题描述】:大约一年半以来,我一直在维护一个 mysql 表,其中包含从 php 代码插入的数据行。真的很愚蠢,我知道,我没有包含 timestamp
来插入这些行。
有没有什么可能的方法可以通过一些元数据或其他方式检索创建这些行的timestamp
? (MySQL或PHPMyAdmin或其他一些可能的方式?)
【问题讨论】:
mysql 中的元数据在information_schema
db 中,关于您的问题,您只能在TABLES
中看到表的创建时间和更新时间,但没有关于每一行的内容
同样的事情发生在我身上,两年以来我一直在维护这些记录。在我开始的时候,我真的不需要维护记录插入时间,所以我忽略了它,但现在情况发生了变化,我后悔了:(
【参考方案1】:
很遗憾,在这种情况下您无能为力。如果 MySQL 有一个秘密时间戳字段,则表的一般大小为would increase by 4 bytes per row。
【讨论】:
【参考方案2】:如果它保存在您的一台服务器上的某个位置,您可以获得该时间戳的唯一方法。您有一个 Web 服务器,您可以为它保存日志存档。或者其他一些有 PHP 脚本向数据库发出请求的活动时间戳的地方。
假设您有 Web 服务器日志,并且每个或大部分 PHP 脚本活动都有一个条目,那么您可能可以解析该日志,获取时间戳并将其映射到数据库中的行。如您所见,这很费力,但并非完全不可能。
对于 MySQL(或任何其他数据库),它们通常不会保留大量过去信息的存档。主要原因 - 由应用程序的开发人员或设计人员决定应保留哪些信息。数据库仅保留其所有部分正常运行所需的数据。
刚刚有了一个想法,那就是你有事务日志存档(我真的怀疑),然后你可以在数据库的备份上重新运行它们,并且可能它们(事务日志)包含行的时间戳添加或更改。
【讨论】:
【参考方案3】:如果幸运的话,其他表中的记录依赖于您感兴趣的记录。这些记录在创建时可能有时间戳。 因此,当您关心的记录可能已经创建时,您至少有一个大致的了解。 除此之外,主键通常增长的速率可能会在您的记录创建时提供另一个估计值。
但是,是的,这些只是估计值。其他现有答案中提到了其他方法。
【讨论】:
【参考方案4】:这是一种方法: https://www.marcus-povey.co.uk/2013/03/11/automatic-create-and-modified-timestamps-in-mysql/
希望对你有帮助
【讨论】:
以上是关于从元数据中检索 MySQL 行创建的时间戳?的主要内容,如果未能解决你的问题,请参考以下文章
iOS:如何从 Firebase 检索创建于/更新的时间戳?