【SQL】EC-CUBE4で外部キーを外さずにテストデータを消す方法

外部キーでテストデータが消せないんだけど!?

テストデータをSQLで削除しようとして以下のような外部キーのエラーが出る。

mysql> delete from dtb_order;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`eccubedb`.`dtb_shipping`, CONSTRAINT `FK_2EBD22CE8D9F6D38` FOREIGN KEY (`order_id`) REFERENCES `dtb_order` (`id`))

テストデータを消すためには外部キーを外さないといけないのか?

流石にそれは手間がかかりすぎる。でも消したい・・・と思って調べたらありました。

MySQLを作るような人がそんなことを考えていないはずがない!

以下のSQLならば消せます。

テストデータ削除のSQL

set foreign_key_checks = 0;

truncate table dtb_cart;
truncate table dtb_cart_item;
--その他必要があれば追加

set foreign_key_checks = 0;で外部キーのチェックが無効になります。

そのあとで削除用のSQLを実行すればOKです。

コメント

タイトルとURLをコピーしました