Esvaziar uma base de dados sem a apagar

Vai reinstalar a aplicação e quer começar do zero. O caminho óbvio parece ser apagar a base de dados e criar outra. É o caminho errado, e a conta chega mais tarde: a reinstalação falha a dizer que não consegue ligar, com o nome certo, o utilizador certo e a palavra-passe certa, e ninguém percebe porquê.

A diferença que ninguém explica

Numa conta de hospedagem há três peças separadas, e só a primeira é a base de dados propriamente dita.

A peça O que lhe acontece se apagar a base
A base, com as tabelas lá dentro Desaparece, e com ela tudo o que estava guardado.
O utilizador da base Continua a existir e continua a aparecer na lista do cPanel. Mas fica sem nada a que aceder.
A ligação entre os dois, com as permissões Desaparece também, e é esta que ninguém vê. Criar outra base com exactamente o mesmo nome não a traz de volta: tem de voltar a juntar o utilizador à base e a dar-lhe todos os privilégios, à mão.

É por isto que a reinstalação falha com tudo aparentemente certo. Os dados de ligação estão bons; o que falta é a autorização, que se foi com a base velha.

Antes de tudo, uma exportação. Sempre, e mesmo quando tem a certeza de que não precisa dela. No phpMyAdmin, com a base aberta, o separador de exportar dá-lhe o ficheiro. Se a base for grande, exporte-a por SSH: importar (e exportar) uma base grande por SSH. Guarde o ficheiro fora do servidor. Isto é instantâneo e não tem desfazer.

Esvaziar: apagar as tabelas e deixar a base de pé

Esvaziar é apagar as tabelas. A base fica, o utilizador fica, as permissões ficam, e o ficheiro de configuração da aplicação continua a servir sem se lhe tocar. É o que quer em quase todos os casos.

1 Faça a exportação e guarde-a no seu computador. Nunca a deixe dentro da pasta do site: um ficheiro de base de dados à solta ali é a palavra-passe e os dados todos ao alcance de quem adivinhar o nome.
2 No phpMyAdmin, abra a base e marque todas as tabelas. Em baixo da lista há uma caixa de acções para o que está marcado: escolha a de eliminar, que aparece como Drop. Ele mostra-lhe os comandos e pede confirmação antes de correr o que quer que seja.
3 Confirme que ficou vazia, e não que sumiu. A base tem de continuar na lista da esquerda, agora sem tabela nenhuma. Se desapareceu da lista, apagou a base em vez das tabelas: vá à última secção deste artigo.
4 Reinstale. A aplicação nova encontra a base vazia e cria nela as tabelas dela.
Se algumas tabelas se recusarem a sair, é porque outras dependem delas. A maneira que funciona sempre é correr tudo de uma só vez no separador SQL: primeiro SET FOREIGN_KEY_CHECKS = 0;, a seguir os comandos de eliminar, e SET FOREIGN_KEY_CHECKS = 1; no fim. Tem mesmo de ser tudo no mesmo envio: cada envio ao phpMyAdmin abre uma ligação nova, e essa definição não passa de uma ligação para a outra.

A lista de comandos, sem a escrever à mão

Numa base com dezenas de tabelas ninguém escreve o comando de cada uma. Peça a lista ao próprio motor. No separador SQL, troque conta_base pelo nome completo da sua base, com prefixo:

SELECT CONCAT('DROP TABLE IF EXISTS `', table_name, '`;') FROM information_schema.tables WHERE table_schema = 'conta_base';

O resultado é a lista pronta a correr. Copie-a, cole-a no mesmo separador entre as duas linhas do FOREIGN_KEY_CHECKS, e execute. Leia a lista antes de a correr: se aparecer lá o nome de uma tabela de outro site, escreveu o nome da base errada.

Quando apagar a base é mesmo o que quer

O que quer fazer O que se faz
Reinstalar a mesma aplicação de raiz Esvaziar. A base e o utilizador servem outra vez, e não mexe no ficheiro de configuração.
Trocar de aplicação naquele domínio Esvaziar. A aplicação nova cria as tabelas dela numa base vazia sem se queixar.
Deixar de usar aquela base de vez Apagar. E apague também o utilizador, se não servir mais nada: um utilizador esquecido, com palavra-passe antiga, é uma porta a mais.
Libertar espaço e continuar a usar o site Nenhuma das duas. O que quer é limpar, e isso faz-se com o site a andar: limpar e optimizar a base de dados.
O site deixou de ligar e não sabe porquê Não apague nada. A lista de causas está em quando o site diz que não consegue ligar à base de dados.

Já apagou a base. Como se repara

1 Crie outra base com exactamente o mesmo nome. No cPanel escreve-se só a parte que escolheu; o prefixo da conta ele acrescenta sozinho. O nome final tem de ficar igual, letra a letra, ao que está no ficheiro de configuração da aplicação.
2 Volte a juntar o utilizador à base, com todos os privilégios. É este o passo que falta a toda a gente, e é o que faz o erro desaparecer. O caminho está em criar bases de dados e usar o phpMyAdmin.
3 Importe a exportação, se a tiver. Se o ficheiro for grande de mais para o phpMyAdmin, o caminho é importar por SSH.
4 Se não tem exportação nenhuma, ainda há as cópias do painel, e não mexa em mais nada até as ver: como restaurar dados com o JetBackup.
Confirme o nome da base antes de apagar o que quer que seja. Se a conta tiver vários sites, os nomes parecem-se todos, e o mesmo prefixo está à frente de todos eles. Um site que nada tinha a ver com isto pode ficar vazio em dois segundos. Se não tem a certeza de qual é a base daquele site, descubra-a primeiro.

Apagou a base e não tem cópia sua? Diga-nos o domínio e a hora, depressa, que vamos ver o que há guardado.

Abrir um pedido de suporte

VEJA TAMBÉM

Planos de hospedagem e o que cada um inclui

Política de Suporte: até onde vai a nossa ajuda

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 396,00 MT/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?