Zerar Tabela de Clientes

Quando instalamos o Magento e iniciamos nossos testes é comum criarmos alguns clientes de testes para efetuar os pedidos e testar a navegabilidade do cliente logado.

Também pode acontecer de você realizar testes de importação/migração de clientes para sua loja. E uma vez que você finaliza a bateria de testes, você quer zerar estas tabelas, limpar os registros e reiniciar os cadastros.

Solução de backend

Ao acessar o painel de controle do Magento, acessando:

Clientes > Gerenciar Clientes

Podemos selecionar os clientes que desejamos excluir do sistema, inclusive selecionar todos eles. Depois basta marcar no campo Ações a opção “Excluir“, e clicar em Enviar.

excluir clientes

Com isso você consegue excluir os clientes do sistema, o problema aqui é que ele não reinicia as tabelas. Então se você tinha 300 clientes cadastrados, depois que excluir estes clientes e limpar a base, o próximo cliente que você cadastrar vai ter o ID=301.

Se isso não é problema pra você, essa solução do sistema já serve.

A solução SQL

A solução em sql eu considero sempre mais agressiva. Pois vai direto na fonte, e qualquer erro pode causar sérios danos ao sistema.

Aparentemente as tabelas referentes ao controle de clientes não sofreram grandes modificações nas atualizações do Magento, por isso o código abaixo vai funcionar em qualquer versão do sistema:

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;

Nessa solução não podemos usar filtros (cláusula where), então TODOS os clientes serão excluídos das tabelas pelo comando TRUNCATE. E na sequência utilizamos o comando ALTER TABLE para reiniciar a contagem dos ID’s nos cadastros – zerando assim as tabelas de clientes.

Outras informações

Se você inspecionar as tabelas do sistema, provavelmente vai encontrar outras tabelas referentes aos clientes que não estão em nosso script, como:

customer_eav_attribute
customer_eav_attribute_website
customer_form_attribute
customer_group

Essas tabelas não devem ser zeradas, pois possuem informações de configuração para o sistema.

Para executar o script acima você deve abrir um SGBD como Sequel Pro ou phpMyAdmin, colar o código no campo Query (ou SQL), e mandar executar.

executando o script no sequelpro

É recomendável reindexar os índices das tabelas após executar scripts SQL direto no banco de dados.

Caso deseje fazer o mesmo com as tabelas de vendas, leia o post Zerar Tabela de Vendas.

Em caso de dúvidas, use o fórum da Escola Magento.

Sucesso!