11
7

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 3 years have passed since last update.

mysqlにてテーブルを削除できない ERROR 1451 (23000)

Posted at

##はじめに
mysqlにてテーブル削除をしようとした際に、「ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails ~」エラーが発生したので、その解決法を記しておきます。

結論としては、外部キー制約を一時的に無効にすることで削除できるようになりました。

mysqlのバージョン5.7.34

##対処法
エラーに遭遇して、解決までの流れを記載していきます。

まずはmysqlにアクセス。

$ mysql -u root -p

次に接続するデータベースを参照して、切り替え。

mysql> show databases;
mysql> use データベース名;

そしてテーブルを参照して、中身を見る。

mysql> show tables;
select * from テーブル名;

次にテーブルを削除しようとすると、表題のエラーが…。

mysql> delete from テーブル名;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`データベース名`.`posts`, CONSTRAINT `fk_rails_5b5ddfd518` FOREIGN KEY (`user_id`) REFERENCES `テーブル名` (`id`))

このエラーは、親行を削除もしくは更新できず外部キー制約に失敗しているという内容です。
このエラーに対して、以下コマンドにて外部キー制約を一時的に無効にします。

mysql> SET FOREIGN_KEY_CHECKS = 0;

このコマンドにてOKが出れば、もう一度削除のコマンドを実行します。

mysql> delete from テーブル名;
Query OK, 3 rows affected (0.00 sec)

無事削除できたみたいなので、先ほど無効にした外部キー制約を戻しておきます。

mysql> SET FOREIGN_KEY_CHECKS = 1

あとは「exit;」にてmysqlを抜けて完了です。

11
7
1

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
11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?