Pues no has entendido a que me refiero respecto del TRUNCATE, ¿no es así?
Si lees el manual de referencia lo entenderás un poco mejor, pero un TRUNCATE no "trunca" la tabla realmente, sino que:
1) Crea una tabla nueva con la misma estructura de la tabla a truncar, con diferente nombre.
2) Elimina la tabla a truncar.
3) Cambia el nombre de la tabla nueva por el de la vieja.
Cita: TRUNCATE TABLE fails for an InnoDB table or NDB table if there are any FOREIGN KEY constraints from other tables that reference the table. Foreign key constraints between columns of the same table are permitted.
Ese proceso hace que si existen dependencias funcionales (constraint FK) el truncado pueda fallar, porque MySQL no admite que se eliminen las tablas vacías en esas condiciones.
Como dije, tienes que leer el manual de referencia...
https://dev.mysql.com/doc/refman/5.6...ate-table.html