あんまりtruncate tableする機会がいままでなかったのですが、mysqlでtruncateしようとしたら、外部キーの制約があるからできませんってエラーが出てきたとき、どうしてもtruncateしたい場合は次の様に外部キーチェックを一度キルトいいようです。
mysql> truncate table messages;
ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (`database_name`.`table_name`, CONSTRAINT `foreign_key_name` FOREIGN KEY (`foreign_key_culumn_name`) REFERENCES `database_name`.`target_table_name` (`id`))
mysql> set foreign_key_checks = 0;
mysql> truncate table table_name;
mysql> set foreign_key_checks = 1;