Após excluir todos os nós, como redefinir o ID do nó para iniciar novamente a partir de 1?
17
Gerei toneladas de conteúdo fictício para teste e, em seguida, apaguei todos eles. Como o nid é incrementado automaticamente, o nó recém-criado terá um nid do último nid criado +1.
A questão é: por que querer fazer isso? Realmente não importa qual nid é usado, e não há garantia de que seja sempre estritamente sequencial.
Berdir 19/03/11
3
Eu concordo com Berdir; nenhum módulo deve confiar no fato de o primeiro nó ter um ID igual a 1. Isso é semelhante ao ID do usuário: você pode confiar na presença de um usuário com um ID igual a 0 e a 1, sempre criados a partir do Drupal durante a instalação, mas você não deve confiar na presença de uma conta de usuário com ID igual a 3. Outros módulos podem excluir a conta do usuário anônimo ou do superusuário, mas isso deve ser considerado um bug desses módulos.
kiamlaluno
Respostas:
13
Por favor, não trunque a tabela de nós assim, existem outras tabelas conectadas à tabela de nós, como node_revisions, sequências, tabelas de campos, tabelas de taxonomia e muito mais.
Não há uma maneira segura de fazer isso, isso realmente depende do seu site, você terá que truncar e ajustar todas as tabelas que possuem um nid, incluindo a tabela de seqüências. Lembre-se de que é altamente provável que seu site se torne inutilizável; portanto, não inicie sem um backup primeiro.
Eu esperaria que outras tabelas que contêm referências a nós também estivessem vazias, quando todos os nós forem excluídos. Disse que, nenhum módulo deve confiar no fato do primeiro nó tem ID igual a 1.
Às vezes, nos projetos de migração, quando você migra de outras plataformas (por exemplo, ASP + MSSQL), às vezes torna-se inevitável redefinir o nid devido a vários fatores. Estou certo de que isso poderia ser evitado, mas a troca de tempo / código está sempre lá.
Eu estou passando por um grande projeto de migração que leva meses. O site que eu tenho usado para desenvolvimento e teste teve alguns novos nós adicionados aqui e ali, que hospedam parte do conteúdo mais recente. Acho que você precisaria reverter todos os nós e comentários e definir o AUTO_INCREMENT = 1 para ambos. Gostaria de saber se alguém que fez isso para migrações se deparou com outros problemas, principalmente no Drupal 7?
Webdrips
2
Consulta SQL: ALTER TABLE 'node' AUTO_INCREMENT=1;
Certifique-se de ter excluído todos os nós antes de fazer isso.
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;
você pode truncar a tabela de nós, mas preste atenção, você deve truncar a tabela de campos relacionais; se você deseja iniciar o ID de incremento a partir de 1, pode usar
A tabela de nós truncados ignorará todos os ganchos que devem ser acionados na exclusão do nó, portanto, não é uma boa idéia. Por exemplo, ele deixará os dados na tabela de revisões e o Drupal falhará quando atingir o nid já usado tentando criar a revisão.
Mołot
@ Mołot, se você truncar o nó e a tabela do nó de revisão, não terá nenhum problema. Eu testá-lo e não tem problema
Shahab
O fato de que na sua configuração específica esse método foi bem-sucedido não prova que sempre funcionará.
Respostas:
Por favor, não trunque a tabela de nós assim, existem outras tabelas conectadas à tabela de nós, como node_revisions, sequências, tabelas de campos, tabelas de taxonomia e muito mais.
Não há uma maneira segura de fazer isso, isso realmente depende do seu site, você terá que truncar e ajustar todas as tabelas que possuem um nid, incluindo a tabela de seqüências. Lembre-se de que é altamente provável que seu site se torne inutilizável; portanto, não inicie sem um backup primeiro.
fonte
PS - Outros que responderam a esta pergunta: Acabei de fazer uma pequena verificação após a exclusão do conteúdo e o conteúdo associado é realmente excluído, as tabelas node_revisions e field_ * estão vazias. node_delete diz o mesmo - http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7
Às vezes, nos projetos de migração, quando você migra de outras plataformas (por exemplo, ASP + MSSQL), às vezes torna-se inevitável redefinir o nid devido a vários fatores. Estou certo de que isso poderia ser evitado, mas a troca de tempo / código está sempre lá.
fonte
Consulta SQL:
ALTER TABLE 'node' AUTO_INCREMENT=1;
Certifique-se de ter excluído todos os nós antes de fazer isso.
fonte
Você pode usar o módulo Delete all com os seguintes comandos drush:
Drupal 7
Exclua nós de todos os tipos e redefina os contadores de nós, revisões e comentários.
Drupal 8
Veja aqui
Exclui todo o conteúdo de todos os tipos.
E depois:
fonte
você pode truncar a tabela de nós, mas preste atenção, você deve truncar a tabela de campos relacionais; se você deseja iniciar o ID de incremento a partir de 1, pode usar
fonte