2011-12-11 9 views
1

私はこのデータセットは、常に毎週変化しており、時折私は、彼らが再びできるように、ユーザーには「パージポスト」能力を与えたい行すべての行を消去するときにDBキーをリセットする方法はありますか?

に鋸山-スクレイプ大量のデータを格納するデータマッパーを使用しています新しいデータを取得します。 ポスト「/パージ」のメソッド内

(シナトラ)を行い、私は問題

Post.all.destroy 

を以下している、それは自動インクリメントの量でキーを残しています。このデータセットは他のテーブルに関連付けられていますが、他のデータもクリアされていますので、キーに問題はありません。それぞれのパージでは、私の鍵はある程度の期間を経て巨大になっています(40,000)。

私が使用しない理由DataMapper.auto_migrage!は、タッチしたくない特定のテーブル(関連付けなし)が1つ(設定テーブル)あるためです。

PS。私はプロセスが非常に似ていると仮定しているので、私はdatamapperを使用していますが、activerecordをタグ付けしました。

答えて

2

AUTO INCREMENT値の責任は、ORMではなくDBエンジンに属します。だから、あなたはその値をリセットしたい場合は、あなたのようなクエリを発行する必要があります。非常に単純に、実際に

adapter = DataMapper.repository(:default).adapter 
adapter.execute('ALTER TABLE theTableInQuestion AUTO_INCREMENT= ? ', desired_value); 
+1

:: 'TRUNCATEのtable_name'意志の両方をクリア

ALTER TABLE theTableInQuestion AUTO_INCREMENT=desired_value 

をおそらくあなたのような何かを持っていますすべての行を削除し、カウンタをゼロに戻します(すべての行を削除するのに比べて非常に高速です)。 – d11wtq

関連する問題