Dopo aver eliminato tutti i nodi, come ripristinare l'ID nodo per ricominciare da 1?


17

Ho generato tonnellate di contenuti fittizi per i test e poi li ho cancellati tutti. Poiché il nid è auto-incremento, il nodo appena creato avrà un nid dell'ultimo nid creato +1.

Come posso far ricominciare nid da 1?


6
La domanda è: perché vorresti farlo. Non importa quale sia il nid utilizzato, e non vi è alcuna garanzia che sia sempre strettamente sequenziale.
Berdir,

3
Sono d'accordo con Berdir; nessun modulo dovrebbe fare affidamento sul fatto che il primo nodo abbia un ID uguale a 1. Questo è simile all'ID utente degli utenti: puoi fare affidamento sulla presenza dell'utente con ID uguale a 0 e a 1, che sono sempre creati da Drupal durante l'installazione, ma non si deve fare affidamento sulla presenza di un account utente con ID uguale a 3. Altri moduli potrebbero eliminare l'account dell'utente anonimo o del superutente, ma questo dovrebbe essere considerato un bug di tali moduli.
kiamlaluno

Risposte:


13

Per favore, non troncare la tabella dei nodi in questo modo, ci sono alcune altre tabelle connesse alla tabella dei nodi, come nodi_revisioni, sequenze, tabelle dei campi, tabelle della tassonomia e molte altre.

Non esiste un modo sicuro per farlo, dipende davvero dal tuo sito, dovrai troncare e regolare tutte le tabelle che hanno un nid inclusa la tabella delle sequenze. Ricorda, è molto probabile che il tuo sito diventi inutilizzabile, quindi non iniziare prima senza un backup.


1
Mi aspetto che anche altre tabelle che contengono riferimenti a nodi siano vuote, quando tutti i nodi vengono eliminati. Detto questo, nessun modulo dovrebbe fare affidamento sul fatto che il primo nodo ha un ID uguale a 1.
kiamlaluno

16
ALTER TABLE `node` AUTO_INCREMENT = 1;

PS - Altri che hanno risposto a questa domanda: ho appena fatto un piccolo controllo dopo aver eliminato il contenuto e il contenuto associato è stato effettivamente eliminato, le tabelle node_revis e field_ * sono vuote. node_delete dice lo stesso - http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7

A volte nei progetti di migrazione quando si esegue la migrazione da altre piattaforme (es. ASP + MSSQL), a volte diventa inevitabile ripristinare il nid a causa di molti fattori. Sono sicuro che potrebbe essere evitato, ma il compromesso tempo / codice è sempre lì.


Ho attraversato un enorme progetto di migrazione che richiede mesi. Nel sito che ho utilizzato per lo sviluppo e il test sono stati aggiunti alcuni nuovi nodi qua e là, che nascondono alcuni dei contenuti più recenti. Sto pensando che dovresti ripristinare tutti i nodi e i commenti e impostare AUTO_INCREMENT = 1 per entrambi. Mi chiedo se qualcuno che ha fatto questo per le migrazioni si sia imbattuto in altri problemi, in particolare per Drupal 7?
Webdrips del

2

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

Assicurati di aver eliminato tutti i nodi prima di farlo.


2

Puoi usare il modulo Elimina tutto con i seguenti comandi drush:

Drupal 7

Elimina nodi di tutti i tipi e ripristina i contatori di nodi, revisioni e commenti.

drush delete-all --reset

Drupal 8

Vedere qui

Elimina tutto il contenuto di tutti i tipi.

drush delete-all-delete-content

E poi:

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;

0

è possibile troncare la tabella dei nodi ma, prestare attenzione, è necessario troncare la tabella dei campi relazionali, se si desidera solo avviare l'id di incremento da 1, è possibile utilizzare

ALTER TABLE  `node` AUTO_INCREMENT=1

Troncare la tabella dei nodi ignorerà tutti gli hook che dovrebbero attivarsi sull'eliminazione dei nodi, quindi non è un'idea saggia. Ad esempio, lascerà i dati nella tabella delle revisioni e Drupal si arresterà in modo anomalo quando colpirà il nid già utilizzato nel tentativo di creare la revisione.
Mołot

@ Mołot se tronchi il nodo e la tabella dei nodi di revisione non hai alcun problema. Lo collaudo e non ho problemi
shahab

Il fatto che nella tua configurazione specifica questo metodo abbia avuto successo non dimostra che funzionerà sempre.
Mołot
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.