laravel migration에 빠진 이야기 Cannot delete or update a parent row:a foreign key constraint fails

2748 단어 PHPLaravel
리본에서 를 클릭합니다.php artisan migrate:refresh를 칠 때 다음과 같은 오류가 발생했습니다.
Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key constraint fails (SQL: drop table if exists `comments`)

부자 관계 연결 시
migration 파일 downメソッド 에서
친자관계에 해당하는 부모의 표를 삭제하지 않으면 이 오류가 발생한다.
그러니까
yyyy_mm_dd_152937_create_comments_table.php
// 省略
    public function down()
    {
        Schema::dropIfExists('posts'); //付け足した
        Schema::dropIfExists('comments');
    }
하지만 같은 실수를 저질렀다.
(오류 문장만 있는 테이블 이름이posts와 같은 오류로 바뀝니다.)

해결 방법


조사해 보니 책상dropの順番이 중요한 것 같아요.
하위 테이블의comments부터 순서를 먼저drop로 바꿉니다.
이번에는 posts 책상은 부모, comments 책상은 아이다.
따라서 아래와 같이 기술 순서가 바뀌었다.
yyyy_mm_dd_152937_create_comments_table.php
// 省略
    public function down()
    {
        Schema::dropIfExists('comments'); //子テーブルが先にdropされるよう順番を上にした
        Schema::dropIfExists('posts');
    }
드디어 통과했어...!

연관된 그룹
외부 키가 있는 하위 테이블에서drop를 진행하지 않으면
이불시계의 외키 제한이 끌리는 것 같다.子テーブル->親テーブル 순서로 down의dropIfExists 방법을 써서 해결합니다.
나는 이미 해결된 줄 알았다.
[속편] laravel의 migration에 빠진 이야기

좋은 웹페이지 즐겨찾기