Waiting for table metadata lock 재현하기
이 때 의도적으로 지연해야 하기 sleep 함수를 사용한다.
https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_sleep
* A session - 일반 계정
start transaction;
select * from target_ids_job_execution where sleep(1000)=0;
* B session - root
MariaDB [test]> ALTER TABLE target_ids_job_execution add column xxx char(32) default 'xyz';
행(hang)
* C Session - root
show processlist;
sleep을 포함한 sql 쿼리가 끝나도 여전히 alter table은 hang 걸려 있다. lock에 잡혀 있다.
따라서 KILL 6을 실행해 metadata lock에 걸려 있는 쿼리를 종료시킨다.
show processlist를 실행하면 다음과 같은 결과가 나타난다.
'DB' 카테고리의 다른 글
[mysql] CHARACTER COLLATE 테이블, 컬럼 속성 변경하기 (0) | 2019.07.12 |
---|---|
Warning: Using a password on the command line interface can be insecure 다른 방법 해결 (0) | 2019.04.24 |
[mysql] timestamp 타입 주의사항 (0) | 2019.03.06 |
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 (0) | 2019.01.11 |
[oracle] ORA-01843: not a valid month 해결 하기 (0) | 2018.12.03 |