web-dev-qa-db-ja.com

すべてのノードを削除した後、ノードIDをリセットして1から再び開始するにはどうすればよいですか?

テスト用に大量のダミーコンテンツを生成し、すべて削除しました。 nidは自動インクリメントなので、新しく作成されたノードには、最後に作成されたnid +1のnidがあります。

どうすればnidを再び1から始めることができますか?

16
gilzero

そのようにノードテーブルを切り詰めないでください。node_revisions、シーケンス、フィールドテーブル、分類法テーブルなど、ノードテーブルに接続されている他のいくつかのテーブルがあります。

これを行う安全な方法はありません。それは実際にはサイトに依存します。シーケンステーブルを含むnidを持つすべてのテーブルを切り捨てて調整する必要があります。サイトが使用できなくなる可能性が非常に高いため、最初にバックアップなしで開始しないでください。

12
Luis
ALTER TABLE `node` AUTO_INCREMENT = 1;

PS-この質問に回答した他の人:私はコンテンツを削除した後に簡単なチェックを行っただけで、関連するコンテンツは確かに削除されました。node_revisionsとfield_ *テーブルは空です。 node_deleteは同じことを言う- http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7

移行プロジェクトで他のプラットフォームから移行する場合(ASP + MSSQL)など)、多くの要因によりnidをリセットすることが避けられないことがあります。/codeトレードオフは常に存在します。

16
Dipen

SQLクエリ:ALTER TABLE 'node' AUTO_INCREMENT=1;

これを行う前に、すべてのノードを削除したことを確認してください。

2
beeleg

次のDrushコマンドでモジュール すべて削除 を使用できます。

Drupal 7

すべてのタイプのノードを削除し、ノード、リビジョン、コメントのカウンターをリセットします。

drush delete-all --reset

Drupal 8

ここを参照

すべてのタイプのすべてのコンテンツを削除します。

drush delete-all-delete-content

その後:

ALTER TABLE `node` AUTO_INCREMENT=1;
ALTER TABLE `node_revision` AUTO_INCREMENT=1;
ALTER TABLE `node_field_data` AUTO_INCREMENT=1;
ALTER TABLE `node_field_revision` AUTO_INCREMENT=1;
2
schneidolf

ノードテーブルを切り捨てることができますが、リレーショナルフィールドテーブルを切り捨てる必要があることに注意してください。

ALTER TABLE  `node` AUTO_INCREMENT=1
0
shahab