MySQL〃(1205) Lock wait timeout exceeded 오류해결

반응형


윈도우로 그냥 Oracle이나 쓸걸 공부해보겠다고 MySQL을 사용하다가 오류가 났더니 아무리 검색을 해봐도 리눅스쪽 답변만 있어 한참을 헤맸네요ㅠㅠ 2시간 넘게 고생한 만큼 간단하고 명료하게 오류를 해결해보겠습니다.


어제 게시판 프로젝트 만들기를 하다 boardMapper.xml에서 오라클의 nextval코드를 MySQL에 맞게 변경을 완료했더니 신이나서 테이블을 엄청 만들었었고, 오늘 아침 일어나자마자 10개의 테이블을 삭제했었거든요.





SQL 오류(1205) Lock wait timeout exceeded 발견




그리고 새로운마음으로 테이블을 다시 만들려고 했더니 응답오류가 떠버리고 이런 오류가 떠버렸습니다. 원인은 select 하는 테이블에 inset와 update하는 쿼리가 이미 수행중인 상태라 그것이 종료될때까지 대기하다가 설정된 wait timeout 시간을 초과했다는 말입니다.


그래서 검색을 해보니 리눅스를 사용하는 사람들의 답변들뿐인지 /etc/my.cnf 를 찾아서 timeout의 대기시간을 늘려라 하는 글밖에 없었습니다. 저는 window 사용자인데... 아무리 폴더를 뒤져봐도 그런건 없었습니다. 그래서 CMD로 여러 명령어를 검색해서 /etc/my.cnf를 찾으려 했는데 결과는 실패.





제가 검색한 단서는 이것뿐이라 2시간동안 고민해보고 결론은 내렸죠. 윈도우에도 my.ini라는게 있는데 my.cnf와 확장자가 다를뿐이였지 내용은 비슷했고 수정이 거부될 뿐이였습니다. 한번 폴더의 권한을 변경해서 바꿔보고 안되면 다시 원위치 시켜놓자 그랬더니 대성공이였습니다. (요약) 윈도우의 my.ini = 리눅스의 my.cnf  





 오류 해결


1) MySQL의 설정을 변경해주기위해

내컴퓨터 우클릭 → 관리 → 서비스 및 응용프로그램에서

서비스를 클릭하여 MySQL의 이름을 찾고 중지를 해줍니다.



2) 그리고 MySQL이 설치된 폴더를 찾아

빈 공간에 우클릭 → 속성 → 보안 → 편집을 누릅니다.

현재 윈도우에서 사용자에 모든권한을 누르고 확인을 해주세요.



3) 빨간색 네모칸인 파일들을 바꿔줄텐데요.

my-huge / my-large / my-medium / my-small을

하나씩 메모장으로 열어서



4) 아래쪽부분에

# innodb_lock_wait_timeout = 50을 찾아

50을 120으로 변경해줍니다.


이렇게 my.ini 설정파일이 아닌 위에 4개의 파일을 변경해 주면 Lock wait timeout 오류가 해결이 됩니다. MySQL은 편할줄 알았는데 벌써부터 이런 오류가 생기다니 Oracle로 다시 바꿔야 될까봐요. 알고보면 방법은 간단하지만 시간은 2시간이 걸렸다는게 함정이네요.

반응형