外部キーを無視してテーブルのデータを削除
ローカルのmysql等で、とにかくなんでもいいからテーブルのデータを削除したい時があります。
通常、foreign key(外部キー)で参照されているテーブルはそのままtruncateしようとすると
Cannot truncate a table referenced in a foreign key constraint
とか言うようにエラーが出てデータ削除できません。
この場合は、
SET FOREIGN_KEY_CHECKS=0; TRUNCATE `db_name`.`table_name`; SET FOREIGN_KEY_CHECKS=1;
上のようなSQLを実行してやれば強制的に削除できます。
内容としてはSET FOREIGN_KEY_CHECKS=0で外部キー制約を無視してTRUNCATEを実行し、SET FOREIGN_KEY_CHECKS=1で外部キー制約を有効に戻しています。
ただ、外部キー制約をまったく無視して削除するのでその辺りは理解した上で実行をお願いします。これでDBが崩壊しても責任は取れませんので悪しからず。
コメント