10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[MySQL] 外部キー制約を無視して全テーブルのデータを削除する

Last updated at Posted at 2018-07-29

「全テーブルのデータを一括で削除したい。」は、以下のコマンドで実現できます。

mysql -u[user] -p[password] [database name] -N -e  'show tables' | xargs -IARG mysql -u[user] -p[password] -e 'truncate table ARG' [database name]

しかし、外部キー制約のあるテーブルが存在すると以下のエラーメッセージが表示され、データを削除できないことが分かります。

ERROR 1701 (42000) at line 1: Cannot truncate a table referenced in a foreign key constraint

こんなときは、外部キー制約を無視する以下の命令を指示すればいいのですが、mysqlコマンドから抜けるたびに命令が無効になります。

SET FOREIGN_KEY_CHECKS=0;

なので、以下のようにデータを削除する寸前で命令を指示すれば期待通りに動作します。

mysql -u[user] -p[password] [database name] -N -e  'show tables' | xargs -IARG mysql -u[user] -p[password] -e 'SET FOREIGN_KEY_CHECKS=0; truncate table ARG;' [database name]
10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?