外部キーでテストデータが消せないんだけど!?
テストデータを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です。
コメント