¿Hay una manera fácil y agradable de eliminar todas las tablas de una base de datos MySQL, ignorando las restricciones de clave externa que puedan estar allí?
mysql
foreign-keys
innodb
sql-drop
bcmcfc
fuente
fuente
Drop
del menú desplegable, puede desmarcar laForeign key check
casilla de verificación.Respuestas:
Encontré útil el conjunto generado de declaraciones de caída, y recomiendo estos ajustes:
Nota 1: Esto no ejecuta las declaraciones DROP, solo le da una lista de ellas. Necesitará cortar y pegar la salida en su motor SQL para ejecutarlos.
Nota 2: Si tiene VIEWs, deberá corregir cada
DROP TABLE `VIEW_NAME`
declaraciónDROP VIEW `VIEW_NAME`
manualmente.Por lo tanto, para que las declaraciones de caída funcionen si necesita:
Esto deshabilitará las verificaciones de integridad referencial, por lo que cuando termine de realizar las caídas que necesita, querrá restablecer la verificación de claves con
NB: para usar la salida de SELECT más fácil, la opción mysql -B puede ayudar.
fuente
DROP DATABASE foo; CREATE DATABASE foo;
, que no es lo mismo, pero funcionó para mí.De http://www.devdaily.com/blog/post/mysql/drop-mysql-tables-in-any-order-foreign-keys :
(Tenga en cuenta que esto responde a cómo deshabilitar las comprobaciones de clave externa para poder descartar las tablas en un orden arbitrario. No responde cómo generar automáticamente declaraciones de caída de tabla para todas las tablas existentes y ejecutarlas en un solo script. Respuesta de Jean hace.)
fuente
Aquí se modifica el procedimiento almacenado de SurlyDre para que se ignoren las claves externas:
fuente
_tableName
con un backquotes. De lo contrario, fallará en algunas tablas comogroup
u otras palabras clave.todos los enfoques anteriores incluyen mucho más trabajo que este AFAICT ...
fuente
mysqldump
amysql
, sin tener que pasar a través de un archivo?mysqldump
engrep
enmysql
, funciona. Gracias de nuevo por su solución, está bien.De esta respuesta ,
ejecutar:
Esto elimina las tablas de la base de datos actualmente en uso. Puede configurar la base de datos actual usando
use
.O de lo contrario, la respuesta aceptada de Dion es más simple, excepto que debe ejecutarla dos veces, primero para obtener la consulta y, en segundo lugar, para ejecutar la consulta. Proporcioné algunas tonterías para escapar de caracteres especiales en db y nombres de tablas.
fuente
Aquí hay una solución basada en el cursor. Un poco largo pero funciona como un único lote SQL:
fuente
Tu puedes hacer:
Luego ejecute las consultas generadas. Eliminarán todas las tablas de la base de datos actual.
Aquí hay alguna ayuda sobre el
drop table
comando.fuente
||
está configurado para ser el operador de concatenación. Más específicamente, el modo MySQL SQL contienePIPES_AS_CONCAT
. Referencia: dev.mysql.com/doc/refman/5.0/en/…concat
lugar de||
Se me ocurrió esta modificación en la respuesta de Dion Truter para que sea más fácil con muchas tablas:
Esto devuelve todo en un campo, por lo que puede copiar una vez y eliminar todas las tablas (usar
Copy Field Content (unquoted)
en Workbench). Si tiene MUCHAS tablas, puede alcanzar algunos límitesGROUP_CONCAT()
. Si es así, aumente la variable max len (ymax_allowed_packet
, si es necesario).fuente
Una línea para eliminar todas las tablas de una base de datos determinada:
Al ejecutar esto, se eliminarán todas las tablas de la base de datos DATABASE_NAME.
Y lo bueno de esto es que el nombre de la base de datos solo se escribe explícitamente una vez.
fuente
Buscar en Google sobre el tema siempre me lleva a esta pregunta SO, así que aquí está trabajando el código mysql que elimina AMBAS tablas y vistas:
fuente
Aquí hay una forma automatizada de hacer esto a través de un script bash:
fuente
Si está en Linux (o en cualquier otro sistema que admita tuberías, eco y grep), puede hacerlo con una línea:
Sé que esta es una vieja pregunta, pero creo que este método es rápido y simple.
fuente
En php es tan fácil como:
Solo recuerde cambiar YOURDB al nombre de su base de datos, y obviamente al usuario / pase.
fuente
En un shell de Linux como bash / zsh:
Esto generará los comandos, luego los canalizará inmediatamente a una segunda instancia de cliente que eliminará las tablas.
La parte inteligente, por supuesto, se copia de otras respuestas aquí: solo quería una copia y pegar una línea (ish) para hacer realmente el trabajo que el OP quería.
Tenga en cuenta que, por supuesto, también tendrá que poner sus credenciales (dos veces) en estos comandos mysql, a menos que tenga una configuración de seguridad muy baja. (o puede alias su comando mysql para incluir su credibilidad).
fuente
Simplemente ponga aquí algún comentario útil hecho por Jonathan Watt para descartar todas las tablas
Me ayuda y espero que pueda ser útil.
fuente
Descarte todas las tablas de la base de datos con una sola línea desde la línea de comandos:
Donde [nombre de usuario], [contraseña], [nombre de host] y [nombre de base de datos] deben reemplazarse con datos reales (usuario, contraseña, nombre de host, nombre de base de datos).
fuente
Esta es una publicación bastante antigua, pero ninguna de las respuestas aquí realmente respondió la pregunta en mi opinión, ¡así que espero que mi publicación ayude a la gente!
Encontré esta solución en otra pregunta que me funciona muy bien:
Eso realmente vaciará todas sus tablas en la base de datos
DB_NAME
, y no solo mostrará laTRUNCATE
línea de comando.¡Espero que esto ayude!
fuente
Sobre la base de la respuesta de @Dion Truter y @Wade Williams, el siguiente script de shell eliminará todas las tablas, después de mostrar primero lo que está a punto de ejecutar, y le dará la oportunidad de abortar el uso de Ctrl-C.
fuente
Esta solución se basa en la respuesta de @SkyLeach pero con el soporte de soltar tablas con claves foráneas.
fuente
fuente
Simple y claro (puede ser).
Puede que no sea una solución elegante, pero esto me funcionó y me salvó el día.
Trabajado para la versión del servidor: 5.6.38 MySQL Community Server (GPL)
Pasos que seguí:
MySQL shell
fuente
Yo uso lo siguiente con un servidor MSSQL:
Reemplace YOUR_DATABASE con el nombre de su base de datos o elimine toda la instrucción IF (me gusta la seguridad adicional).
fuente
La mejor solución para mí hasta ahora
Seleccione Base de datos -> Clic derecho -> Tareas -> Generar guiones - se abrirá el asistente para generar guiones. Después de elegir los objetos en la opción Establecer secuencias de comandos, haga clic en el botón Avanzado . En "Script DROP and CREATE" seleccione Script DROP .
Ejecutar guión.
fuente