본문 바로가기
LEARN/SQL

[MySQL] drop table 안 될 때 해결

by 아이엠제니 2024. 2. 15.

 


 

 

 

MySQL에서 테이블이 삭제되지 않는 현상이 발생했다.

drop table test;

 

테이블이 많지는 않았는데, 참조 관계가 없는 테이블들은 삭제가 되었으나!

참조 관계로 엮여 있는 것들은, 우선 삭제해야 할 테이블을 삭제해도 삭제가 되질 않았다.

'delete from test;' 데이터 삭제 또한 되질 않았다.

 

 

 

처음에 사용했던 방법
-- 참조키 비활성화
SET foreign_key_checks = 0;

-- 테이블 삭제
delete table test;

-- 참조키 활성화
SET foreign_key_checks = 1;

 

참조 관계 때문에 생긴 거라면, 우선은 테이블 삭제가 필요해서!

참조키 비활성화 후, 테이블을 삭제를 진행하려고 했다.

하지만 이것도 전혀 먹히질 않았다.

ctrl + enter를 치는 순간, 무한 로딩에 걸렸다.

 

 

 

두 번째 사용한 방법 (해결)

https://4sii.tistory.com/152

위 티스토리 글을 참고하여 해결했다.

 

show processlist;

 

위 명령어로 입력하면!

 

 

 

프로세스를 확인할 수 있다.

'State'를 보면 'lock'이라는 단어가 들어간 상태값이 들어가는 것들이 있다.

처음에는 그것만 삭제를 했었다.

 

 

 

kill 4765;

예를 들어 이런 식으로 말이다.

하지만 그것만 삭제해서는 문제가 해결되지 않았다.

그래서 State 값에 'init'이 있는 것을 제외한 나머지를 모두 삭제했다.

'kill' 명령어로 id 값 넣어서 삭제하면 된다.

 

 

이렇게 한 후로 문제가 해결되었다.

참조 관계가 쉽지 않고, 이에 대해 더 공부해야겠다고 느꼈다.

어차피 테이블은 날릴 거였어서, 큰 상관은 없었지만?

만약 실제로 운영중인 테이블이었으면.. (아찔이다.)

역시 쉬운 건 없고, 계속 새로운 것을 배워간다.

 

 

 

300x250