MySQL에서 테이블이 삭제되지 않는 현상이 발생했다.
drop table test;
테이블이 많지는 않았는데, 참조 관계가 없는 테이블들은 삭제가 되었으나!
참조 관계로 엮여 있는 것들은, 우선 삭제해야 할 테이블을 삭제해도 삭제가 되질 않았다.
'delete from test;' 데이터 삭제 또한 되질 않았다.
처음에 사용했던 방법
-- 참조키 비활성화
SET foreign_key_checks = 0;
-- 테이블 삭제
delete table test;
-- 참조키 활성화
SET foreign_key_checks = 1;
참조 관계 때문에 생긴 거라면, 우선은 테이블 삭제가 필요해서!
참조키 비활성화 후, 테이블을 삭제를 진행하려고 했다.
하지만 이것도 전혀 먹히질 않았다.
ctrl + enter를 치는 순간, 무한 로딩에 걸렸다.
두 번째 사용한 방법 (해결)
위 티스토리 글을 참고하여 해결했다.
show processlist;
위 명령어로 입력하면!
프로세스를 확인할 수 있다.
'State'를 보면 'lock'이라는 단어가 들어간 상태값이 들어가는 것들이 있다.
처음에는 그것만 삭제를 했었다.
kill 4765;
예를 들어 이런 식으로 말이다.
하지만 그것만 삭제해서는 문제가 해결되지 않았다.
그래서 State 값에 'init'이 있는 것을 제외한 나머지를 모두 삭제했다.
'kill' 명령어로 id 값 넣어서 삭제하면 된다.
이렇게 한 후로 문제가 해결되었다.
참조 관계가 쉽지 않고, 이에 대해 더 공부해야겠다고 느꼈다.
어차피 테이블은 날릴 거였어서, 큰 상관은 없었지만?
만약 실제로 운영중인 테이블이었으면.. (아찔이다.)
역시 쉬운 건 없고, 계속 새로운 것을 배워간다.
300x250
'LEARN > SQL' 카테고리의 다른 글
[MySQL] 디비버(DBeaver)에서 MySQL 로컬DB 연결 (0) | 2024.03.08 |
---|---|
[MySQL] 유저 계정 생성 및 권한 추가 (0) | 2024.02.25 |
[DOCKER] 도커 MySQL DB dmp (0) | 2024.01.12 |
[MySQL] 테이블 여러 개 삭제 (0) | 2023.12.07 |
[ORACLE] DBeaver 에서 UPDATE 시 무한 로딩 오류 (0) | 2023.08.27 |