2011-11-10 117 views
0

mySQL不直接指向文件。相反,它可以保存数据库条目的路径。我如何设计目录自动更新我的数据库中的相应条目的时候修改这些文件是由(即重新实现mv,监控目录,检查点系统涉及犯...)给定的样本见下表文件更改时自动更新mySQL条目

CREATE TABLE IF NOT EXISTS file 
(
    ID INT NOT NULL AUTO_INCREMENT, 
    path VARCHAR(150), 
    size INT, 
    creationDate TIMESTAMP DEFAULT NOW(), 
    modificationDate TIMESTAMP(8), 
    destructionDate TIMESTAMP(8), 
    PRIMARY KEY(ID) 
)ENGINE=InnoDB 

每次我移动,编辑或删除文件,我希望更改自动反映在path,size,creationDate,modificationDatedestructionDate。我愿意接受任何建议。

+0

Mysql不知道“路径”是什么,每次移动,编辑或删除文件时都必须更新表格。 – abhinav

+0

@abhinav是的,我知道这一点(尽管我从来不知道它有一个术语'不可知论')。当然,这肯定有一些办法。也许标记和监视文件/文件夹,或捕获到'mv','rm'的调用... – puk

+0

我想不出一个更好的术语来描述它:)是的,你可以添加事件处理程序或使用任何其他方式您正在使用的语言/框架。最后,mysql表的自动更新必须通过您的语言/框架完成。“MySQL”本身并不提供跟踪文件修改的工具。 – abhinav

回答

2

如果你使用的是linux,你可以使用inotify(linux.die.net/man/7/inotify)。你可以附加一个事件,当文件被移动,删除等,然后发射一个脚本或任何更新你的MySQL表值。我从来没有像那样使用过它。

有趣的阅读:https://serverfault.com/questions/50127/how-to-automatically-run-a-script-when-the-contents-of-a-directory-changes-in-li

只是一个想法:-)

虽然我想补充我的意见作为一个答案。它是否有效还有待观察!让我们更新。

+0

对不起,有时我忘记提及我正在使用Linux,因为我没有看到在Windows环境中编程的吸引力。 – puk