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

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

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.

Dejar un comentario

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