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?
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.
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.
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.
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.
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;
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
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.
Jawaban:
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.
sumber
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.
sumber
Permintaan SQL:
ALTER TABLE 'node' AUTO_INCREMENT=1;
Pastikan Anda telah menghapus semua node sebelum melakukan ini.
sumber
Anda dapat menggunakan modul Hapus semua dengan perintah drush berikut:
Drupal 7
Hapus semua jenis node, dan setel ulang simpul, revisi, dan komentar counter.
Drupal 8
Lihat disini
Menghapus semua konten dari semua jenis.
Lalu:
sumber
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
sumber