ฉันสร้างเนื้อหาจำลองเพื่อการทดสอบแล้วลบออกทั้งหมด เนื่องจาก nid เป็นการเพิ่มอัตโนมัติโหนดที่สร้างขึ้นใหม่จะมีหมายเลขของ nid ที่สร้างขึ้นล่าสุด +1
ฉันจะทำให้ nid เริ่มต้นจาก 1 อีกครั้งได้อย่างไร
ฉันสร้างเนื้อหาจำลองเพื่อการทดสอบแล้วลบออกทั้งหมด เนื่องจาก nid เป็นการเพิ่มอัตโนมัติโหนดที่สร้างขึ้นใหม่จะมีหมายเลขของ nid ที่สร้างขึ้นล่าสุด +1
ฉันจะทำให้ nid เริ่มต้นจาก 1 อีกครั้งได้อย่างไร
คำตอบ:
โปรดอย่าตัดทอนตารางโหนดแบบนั้นอย่างนั้นมีบางตารางอื่น ๆ ที่เชื่อมต่อกับตารางโหนดเช่น node_revisions, ลำดับ, ตารางเขตข้อมูล, ตาราง taxonomy และอื่น ๆ อีกมากมาย
ไม่มีวิธีที่ปลอดภัยในการทำเช่นนี้ขึ้นอยู่กับไซต์ของคุณคุณจะต้องตัดทอนและปรับตารางทั้งหมดที่มี 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 เนื่องจากปัจจัยหลายอย่าง ฉันแน่ใจว่าสามารถหลีกเลี่ยงได้ แต่การแลกเปลี่ยนเวลา / รหัสอยู่ที่นั่นเสมอ
แบบสอบถาม SQL: ALTER TABLE 'node' AUTO_INCREMENT=1;
ตรวจสอบให้แน่ใจว่าคุณได้ลบโหนดทั้งหมดก่อนที่จะทำเช่นนี้
คุณสามารถใช้โมดูลลบทั้งหมดด้วยคำสั่ง 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;
คุณสามารถตัดทอนตารางโหนดได้ แต่ต้องระวังว่าคุณต้องตัดทอนตารางเชิงสัมพันธ์ถ้าคุณต้องการเริ่มเพิ่มรหัสจาก 1 คุณสามารถใช้
ALTER TABLE `node` AUTO_INCREMENT=1