MySQL 2

[MySQL] Table Lock (feat. Deadlock 💀)

틀린 내용을 발견하시면 말씀 부탁드립니다! 🙇 특정 테이블이 업데이트될 때 동작하는 트리거에서 수정할 부분이 있어 수정 후 저장을 하려고 했는데 계속 Table Lock 걸리는 이슈가 생겼다. 이슈는 (팀장님이) 해결했는데,-뭔지는 모르겠지만 트랜잭션 1개가 계속 동작하고 있었고 해당 트랜잭션을 kill하니 트리거 수정 내용이 정상 반영됨- 정확히 어떤 상황에서 Lock이 발생하고 이를 해결하기 위해 뭘 확인해야 하는지 궁금한 관계로 이번 기회에 정리하기로 했다. SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; # 문제있는 트랜잭션을 찾아 TRX_ID를 kill cf) INFORMATION_SCHEMA.INNODB_TRX: 트랜잭션이 락 때문에 대기 상태인지 뿐만 아니라 ..

[MySQL] SQL Error Explicit or implicit commit is not allowed in stored function or trigger

MySQL 함수를 작성하다 마주친 에러와 구글링을 하며 알게 된 사실에 대해 짧게 기록해본다. 에러 발생 원인부터 말해보자면 함수 내에서 프로시저를 호출했기 때문이었고, 함수 대신 프로시저를 사용하여 에러를 해결했다. 에러 문구에 나와있듯 Stored function 또는 트리거 내에서는 commit이 허용되지 않는다. 즉 Stored function 내부에서는 트랜잭션 작업을 수행하면 안 된다. → Stored procedure와 차이점 https://stackoverflow.com/questions/16969875/error-code-1422-explicit-or-implicit-commit-is-not-allowed-in-stored-function Error Code: 1422. Explicit ..