2011-11-10 52 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