Setelah menghapus semua node, bagaimana cara mereset ID node untuk memulai dari 1 lagi?

17

Saya menghasilkan banyak konten dummy untuk pengujian, dan kemudian menghapus semuanya. Karena nid adalah penambahan otomatis, simpul yang baru dibuat akan memiliki nid +1 yang dibuat terakhir.

Bagaimana saya bisa membuat nid mulai dari 1 lagi?

gilzero
sumber
6
Pertanyaannya adalah, mengapa mau melakukan itu. Tidak masalah apa pun nid yang digunakan, dan tidak ada jaminan bahwa nid selalu benar-benar berurutan.
Berdir
3
Saya setuju dengan Berdir; tidak ada modul yang harus bergantung pada fakta bahwa simpul pertama memiliki ID sama dengan 1. Ini mirip dengan ID pengguna pengguna: Anda dapat mengandalkan keberadaan pengguna dengan ID sama dengan 0 dan ke 1, yang selalu dibuat dari Drupal selama instalasi, tetapi Anda tidak harus bergantung pada keberadaan akun pengguna dengan ID sama dengan 3. Modul lain dapat menghapus akun pengguna anonim atau super-pengguna, tetapi itu harus dianggap sebagai bug dari modul tersebut.
kiamlaluno

Jawaban:

13

Harap jangan memotong tabel simpul begitu saja, ada beberapa tabel lain yang terhubung ke tabel simpul, seperti simpul_revisi, urutan, tabel bidang, tabel taksonomi, dan banyak lagi.

Tidak ada cara aman untuk melakukan ini, itu sangat tergantung pada situs Anda, Anda harus memotong dan menyesuaikan semua tabel yang memiliki nid termasuk tabel urutan. Ingat, sangat mungkin situs Anda menjadi tidak dapat digunakan, jadi jangan mulai tanpa cadangan terlebih dahulu.

Luis
sumber
1
Saya berharap bahwa tabel lain yang berisi referensi ke node juga harus kosong, ketika semua node dihapus. Mengatakan bahwa, tidak ada modul yang harus bergantung pada fakta bahwa simpul pertama memiliki ID sama dengan 1.
kiamlaluno
16
ALTER TABLE `node` AUTO_INCREMENT = 1;

PS - Orang lain yang telah menjawab pertanyaan ini: Saya baru saja melakukan pemeriksaan kecil setelah menghapus konten dan konten yang terkait memang dihapus, tabel node_revisions dan field_ * kosong. node_delete mengatakan hal yang sama - http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7

Terkadang pada proyek migrasi ketika Anda bermigrasi dari platform lain (mis. ASP + MSSQL), terkadang menjadi tidak terhindarkan untuk mengatur ulang nid karena banyak faktor. Saya yakin itu bisa dihindari tetapi waktu / kode tradeoff selalu ada.

Dipen
sumber
Saya telah melalui proyek migrasi besar-besaran yang membutuhkan waktu berbulan-bulan. Situs yang saya gunakan untuk pengembangan dan pengujian telah memiliki beberapa node baru yang ditambahkan di sana-sini, yang menyembunyikan beberapa konten yang lebih baru. Saya pikir Anda harus memutar kembali semua node dan komentar, dan mengatur AUTO_INCREMENT = 1 untuk keduanya. Saya bertanya-tanya apakah ada yang melakukan ini untuk migrasi telah mengalami masalah lain, terutama untuk Drupal 7?
Webdrip
2

Permintaan SQL: ALTER TABLE 'node' AUTO_INCREMENT=1;

Pastikan Anda telah menghapus semua node sebelum melakukan ini.

beeleg
sumber
2

Anda dapat menggunakan modul Hapus semua dengan perintah drush berikut:

Drupal 7

Hapus semua jenis node, dan setel ulang simpul, revisi, dan komentar counter.

drush delete-all --reset

Drupal 8

Lihat disini

Menghapus semua konten dari semua jenis.

drush delete-all-delete-content

Lalu:

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;
schneidolf
sumber
0

Anda dapat memotong tabel simpul tetapi, perhatikan Anda harus memotong tabel bidang relasional, jika Anda hanya ingin memulai kenaikan id dari 1 Anda dapat menggunakan

ALTER TABLE  `node` AUTO_INCREMENT=1
shahab
sumber
Memotong tabel simpul akan mengabaikan semua kait yang seharusnya diaktifkan pada node delete, jadi itu bukan ide yang bijak. Misalnya, ia akan meninggalkan data di tabel revisi, dan Drupal akan macet ketika akan mengenai nid yang sudah digunakan mencoba membuat revisi.
Mołot
@ Mołot jika Anda memotong simpul dan revisi tabel simpul Anda tidak memiliki masalah. Saya mengujinya dan tidak punya masalah
shahab
Fakta bahwa dalam pengaturan spesifik Anda metode ini berhasil tidak membuktikannya akan selalu berfungsi.
Mołot