Parzibyte's blog

Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.

Truncar tabla de MySQL o MariaDB desactivando claves foráneas

En este post voy a explicar cómo truncar una tabla de MySQL o MariaDB sin que nos estorben las claves foráneas o foreign keys.

MySQL y MariaDB - Chequeo de claves foráneas al truncar tabla

MySQL y MariaDB – Chequeo de claves foráneas al truncar tabla

Al truncar una tabla con MySQL, si esta tiene referencias a otras tablas, saldrá un error que dice más o menos así:

ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (`base_de_datos`.`tabla`, CONSTRAINT `alguna_referencia` FOREIGN KEY (`alguna_clave`) REFERENCES `base_de_datos`.`otra_tabla` (`clave`))

Esto es por seguridad, ya que al truncar se eliminarían si tuviéramos la opción de cascada al eliminar datos. En fin, veamos cómo truncar una tabla aunque tenga referencias a otras.

Desactivar FOREIGN_KEY_CHECKS

Nota: antes de esto asegúrate de que ya no necesitas los datos. También recomiendo hacer un respaldo (con PHP también puedes) por si algo sale mal.

La solución es fácil y ya la vimos cuando eliminamos todas las tablas de una base de datos, sin embargo, ese no era el tema principal. En fin, en tu consola ejecuta lo siguiente:

SET FOREIGN_KEY_CHECKS = 0;

Después de eso, haz el truncate de todas las tablas que quieras. Verás que no habrá errores que te detengan. Una vez que termines de truncar todas las tablas y verifiques que efectivamente están vacías, activa el chequeo de nuevo con:

SET FOREIGN_KEY_CHECKS = 1;

Así aseguras la integridad de los datos y te aseguras de no eliminar datos que tengan referencia en un incidente.

Si no tienes acceso a la consola

En caso de que no puedas ejecutar comandos, simplemente haz un delete y luego reinicia el contador de auto incremento si es que existe.

Mira más sobre bases de datos o MySQL en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *