Existe uma maneira fácil e fácil de remover todas as tabelas de um banco de dados MySQL, ignorando quaisquer restrições de chave estrangeira que possam estar lá?
mysql
foreign-keys
innodb
sql-drop
bcmcfc
fonte
fonte
Drop
no menu suspenso, poderá desmarcar aForeign key check
caixa de seleção.Respostas:
Achei o conjunto de instruções drop gerado útil e recomendo estes ajustes:
Nota 1: Isso não executa as instruções DROP, apenas fornece uma lista delas. Você precisará recortar e colar a saída no seu mecanismo SQL para executá-las.
Nota 2: Se você tiver VIEWs, precisará corrigir cada
DROP TABLE `VIEW_NAME`
declaraçãoDROP VIEW `VIEW_NAME`
manualmente.Portanto, para que as instruções drop funcionem, se você precisar:
Isso desabilitará as verificações de integridade referencial - portanto, quando terminar de executar as descargas necessárias, você deverá redefinir a verificação de chave com
Nota: para usar a saída de SELECT mais fácil, a opção mysql -B pode ajudar.
fonte
DROP DATABASE foo; CREATE DATABASE foo;
que não é exatamente o mesmo, mas funcionou para mim.Em http://www.devdaily.com/blog/post/mysql/drop-mysql-tables-in-any-order-foreign-keys :
(Note que este respostas como verificação de chaves estrangeiras com deficiência, a fim de ser capaz de eliminar as tabelas em ordem arbitrária. Ele não responde como gerar automaticamente declarações drop-mesa para todas as tabelas existentes e executá-los em um único script. A resposta de Jean faz.)
fonte
Aqui está o procedimento armazenado do SurlyDre modificado para que chaves estrangeiras sejam ignoradas:
fonte
_tableName
com aspas. Caso contrário, ele falhará em algumas tabelas, comogroup
outras palavras-chave.todas as abordagens acima incluem muito mais trabalho do que este AFAICT ...
fonte
mysqldump
paramysql
, sem passar por um arquivo?mysqldump
paragrep
dentromysql
, ele funciona. Mais uma vez obrigado pela sua solução, é bom.A partir desta resposta ,
executar:
Isso remove tabelas do banco de dados atualmente em uso. Você pode definir o banco de dados atual usando
use
.Ou, caso contrário, a resposta aceita por Dion é mais simples, exceto que você precisa executá-la duas vezes, primeiro para obter a consulta e depois para executá-la. Forneci alguns back-ticks tolos para escapar de caracteres especiais nos nomes de banco de dados e tabela.
fonte
Aqui está uma solução baseada em cursor. Meio demorado, mas funciona como um único lote SQL:
fonte
Você pode fazer:
Em seguida, execute as consultas geradas. Eles soltarão todas as tabelas no banco de dados atual.
Aqui está alguma ajuda no
drop table
comando.fonte
||
está definido como o operador de concatenação. Mais especificamente, o modo SQL do MySQL contémPIPES_AS_CONCAT
. Referência: dev.mysql.com/doc/refman/5.0/en/…concat
em vez de||
Eu vim com essa modificação na resposta de Dion Truter para facilitar com muitas tabelas:
Isso retorna a coisa inteira em um campo, para que você possa copiar uma vez e excluir todas as tabelas (use
Copy Field Content (unquoted)
no Workbench). Se você tiver muitas mesas, poderá atingir alguns limitesGROUP_CONCAT()
. Nesse caso, aumente a variável max len (emax_allowed_packet
, se necessário).fonte
Um liner para eliminar todas as tabelas de um determinado banco de dados:
A execução disso eliminará todas as tabelas do banco de dados DATABASE_NAME.
E uma coisa boa sobre isso é que o nome do banco de dados é escrito apenas explicitamente uma vez.
fonte
A pesquisa no tópico sempre me leva a essa pergunta SO, então aqui está o código mysql que exclui AMBAS tabelas e visualizações:
fonte
Aqui está uma maneira automatizada de fazer isso por meio de um script bash:
fonte
Se no linux (ou em qualquer outro sistema que suporte tubulação, eco e grep), você pode fazer isso com uma linha:
Sei que essa é uma pergunta antiga, mas acho que esse método é rápido e simples.
fonte
No php é tão fácil quanto:
Lembre-se de alterar o YOURDB para o nome do seu banco de dados e, obviamente, o usuário / passe.
fonte
Em um shell Linux como o bash / zsh:
Isso irá gerar os comandos e, em seguida, direcioná-los imediatamente para uma segunda instância do cliente que excluirá as tabelas.
Obviamente, a parte mais inteligente é copiada de outras respostas aqui - eu só queria uma linha única copiável e colável (ish) para realmente fazer o trabalho que o OP queria.
Note que é claro que você terá que colocar suas credenciais (duas vezes) nesses comandos mysql também, a menos que você tenha uma configuração de segurança muito baixa. (ou você pode usar o comando mysql para incluir seus creds.)
fonte
Basta colocar aqui alguns comentários úteis feitos por Jonathan Watt para descartar todas as tabelas
Isso me ajuda e espero que seja útil
fonte
Solte todas as tabelas do banco de dados com uma única linha da linha de comando:
Onde [user_name], [password], [host_name] e [database_name] devem ser substituídos por dados reais (usuário, senha, nome do host, nome do banco de dados).
fonte
Este é um post bastante antigo, mas nenhuma das respostas aqui realmente respondeu à pergunta na minha opinião, por isso espero que meu post ajude as pessoas!
Encontrei esta solução em outra pergunta que funciona muito bem para mim:
Isso realmente esvaziará todas as suas tabelas no banco de dados
DB_NAME
e não apenas exibirá aTRUNCATE
linha de comando.Espero que isto ajude!
fonte
Com base na resposta de @Dion Truter e @Wade Williams, o seguinte script de shell descartará todas as tabelas, depois de mostrar primeiro o que está prestes a ser executado e dar a você a chance de abortar usando Ctrl-C.
fonte
Esta solução é baseada na resposta do @SkyLeach, mas com o suporte de eliminar tabelas com chaves estrangeiras.
fonte
fonte
Simples e claro (pode ser).
Pode não ser uma solução sofisticada, mas isso me funcionou e salvou meu dia.
Trabalhou para a versão Server: 5.6.38 MySQL Community Server (GPL)
Etapas que segui:
Shell MySQL
fonte
Eu uso o seguinte com um servidor MSSQL:
Substitua YOUR_DATABASE pelo nome do seu banco de dados ou remova toda a instrução IF (eu gosto da segurança adicional).
fonte
Melhor solução para mim até agora
Selecione Banco de Dados -> Clique com o Botão Direito -> Tarefas -> Gerar Scripts - abrirá o assistente para gerar scripts. Depois de escolher os objetos na opção Definir script, clique no botão Avançado . Em "Script DROP and CREATE", selecione Script DROP .
Execute o script.
fonte