This is it. it's IT.

[mysql] DB에 Lock이 걸렸다....?????????? 본문

카테고리 없음

[mysql] DB에 Lock이 걸렸다....??????????

응애개발자 애기 2021. 11. 1. 17:47
728x90
반응형

알수없는 이유로 DB에 Lock이 걸렸다....

팀프로젝트를 하면서 여러 기능들이 막 짬뽕되고 하는 탓에 무언가 혼선이 생긴 것 같다

 

table에 insert를 해야하는데 ...

인서트 버튼을 누르니 오랫동안 로딩중이다가 ...

 

타입 예외 보고

메시지 Request processing failed; nested exception is org.springframework.dao.CannotAcquireLockException:

설명 서버가, 해당 요청을 충족시키지 못하게 하는 예기치 않은 조건을 맞닥뜨렸습니다.

예외

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.CannotAcquireLockException: ### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction ### The error may involve com.moolcalm.mapper.ProductMapper.buy-Inline ### The error occurred while setting parameters ### SQL: insert into collection_list(email, p_name) values (?, ?) ### Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction ; ]; Lock wait timeout exceeded; try restarting transaction; nested exception is com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877) javax.servlet.http.HttpServlet.service(HttpServlet.java:681) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

 

대충 요런 에러가 떴다...

선생님이 말하기를

DB가 인서트를 실행중인 도중에 다른 이상한 작업이 혼란을 일으켜서? DB가 자체적으로 이 기능을 막아버린 것이라고 한다....

 

테스트중엔 DB였기때문에 다행히 안에 데이터는 없었다.

 

그래서 결국 DB를 지우고 다시 만들게 되었다....

구글에 쳐도 해결법이 지우고 다시 만드는 거라 하더라.... 이글을 본 당신 ,, 다른 방법이 있다면 알려주시면 고맙습니다.

 

drop table collection_list;

테이블을 지운다... 

 

create table collection_list(
	p_name varchar(30),
    email varchar(20)
);

다시 만든다...

 

-- 제약조건 추가
ALTER TABLE collection_list
ADD CONSTRAINT collection_listfk_1
FOREIGN KEY (email) 
REFERENCES l_info(email)
ON DELETE CASCADE
ON UPDATE CASCADE;

ALTER TABLE collection_list
ADD CONSTRAINT collection_listfk_2
FOREIGN KEY (p_name) 
REFERENCES product_list(p_name)
ON DELETE CASCADE
ON UPDATE CASCADE;

그 다음에 제약조건을 추가한당.

728x90
Comments