テスト用に大量のダミーコンテンツを生成し、それらをすべて削除しました。nidは自動インクリメントなので、新しく作成されたノードには、最後に作成されたnid +1のnidがあります。
nidを再び1から開始するにはどうすればよいですか?
テスト用に大量のダミーコンテンツを生成し、それらをすべて削除しました。nidは自動インクリメントなので、新しく作成されたノードには、最後に作成されたnid +1のnidがあります。
nidを再び1から開始するにはどうすればよいですか?
回答:
そのようにノードテーブルを切り捨てないでください。node_revisions、シーケンス、フィールドテーブル、分類テーブルなど、ノードテーブルに接続された他のテーブルがいくつかあります。
これを行う安全な方法はありません。それは本当にあなたのサイトに依存します。シーケンステーブルを含むnidを持つすべてのテーブルを切り詰めて調整する必要があります。サイトが使用できなくなる可能性が非常に高いことを忘れないでください。最初にバックアップなしで開始しないでください。
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をリセットすることが避けられないことがあります。回避できると確信していますが、時間とコードのトレードオフは常に存在します。
次のブラシコマンドで[すべて削除]モジュールを使用できます。
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;
ノードテーブルを切り捨てることはできますが、リレーショナルフィールドテーブルを切り捨てる必要があることに注意してください。
ALTER TABLE `node` AUTO_INCREMENT=1