2011-11-10 16 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, sizecreationDatemodificationDate、および destructionDateに反映されます。私はどんな提案にも開放的です。

+0

Mysqlは 'path'とは無関係ですので、ファイルを移動、編集、または削除するたびにテーブルを更新する必要があります。 – 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

申し訳ありませんが、私はWindows環境でのプログラミングの魅力がわからないので、私はLinuxを使用していることに言及することを忘れることがあります。 – puk