기본 콘텐츠로 건너뛰기

update a parent row: a foreign key constraint fails in flask-migrate

update a parent row: a foreign key constraint fails in flask-migrate

Flask 에서 DB Class 코드를 지운 후

migration 후 upgrade 명령어를 수행하는 중에

'Cannot delete or update a parent row: a foreign key constraint fails' 다음과 같은 에러가 발생했다.

foreignkey 관계의 같은 경우

ex ) post - comment 인 경우 post가 삭제 될 때 comment 를 casecade 로 삭제하도록 설정하지 않은 경우

위와 같은 에러가 발생할 수 있다.

위와 같은 경우는 mysql 서버에 접속한 후

SET Global FOREIGN_KEY_CHECKS=0;

global 을 붙이지 않으면 shell 에서 python manage.py db upgrade 명령시에는 적용되지 않고,

mysql 서버에서만 해당 테이블을 삭제할 수 있기 때문에 global 을 붙여줘야 한다.

명령어를 입력하면 foreign_key 관게를 확인하지 않고 db table을 삭제해준다.

DB를 삭제한 후에는 다시 SET Global FOREIGN_KEY_CHECKS=1;

다시 원상태로 복구하는 것이 좋다.

누군가에는 도움이 되길..!

from http://blog.doosikbae.com/74 by ccl(A) rewrite - 2020-03-07 11:54:53

댓글

이 블로그의 인기 게시물

Flask 13. pythonanywhere에 배포하기

Flask 13. pythonanywhere에 배포하기 Login: PythonAnywhere It's always a pleasure to hear from you! Ask us a question, or tell us what you love or hate about PythonAnywhere. We'll get back to you over email ASAP. Sorry, there was an error connecting to the server. Please try again in a few moments... www.pythonanywhere.com from http://ohdowon064.tistory.com/124 by ccl(A) rewrite - 2020-03-11 15:54:10

Flask.py #1 설치해보자

Flask.py #1 설치해보자 Flask는 python의 프레임워크라고 할 수 있습니다. Flask를 설치해보자! # 리눅스 -- 접기 이러면 끝 - # pip install flask $ sudo -s 리눅스 같은 경우는 이미 파이썬이 설치가 되어 있을겁니다. # 리눅스 -- 접기 # 맥 -- 접기 이러면 끝 - $ sudo pip install flask 설치가 끝낫으면 Terminal.app 을 열어줍시다. 로 접속하여 파이썬을 설치해 줍니다. [ https://www.python.org/ ] # 맥 -- 접기 # 윈도우 -- 접기 [ https://www.python.org/ ] 로 접속하여 파이썬을 설치해 줍니다. 설치가 끝났으면 [ 고급설정 ] - [ 환경변수 ] - [ 시스템 변수 ] 에서 Path를 찾아줍니다. Path를 찾으셧다면 편집을 누르고 파이썬의 설치 경로와 파이썬 폴더 내의 Script 폴더를 입력해 줍시다. 환경변수까지 끝나셧다면 cmd 창을 키시고 pip install flask 이러면 flask 설치가 끝나게 됩니당 from http://chocoweb.tistory.com/14 by ccl(A) rewrite - 2020-03-07 13:54:54