해결된 질문
작성
·
170
0
크롤링 관련 강의에서 최종코드란을 실행시키면 아래와 같이 트랜잭션 Timeout Lock이 걸립니다.
DB를 지우고 다시 생성해도 동일하게 발생하는데, 어떤 이유로 인해서 발생하는지 알 수 있나요?
<추가질문>
아래 해당 코드가 정상 실행됐을때 DB를 확인해보니 데이터가 없는 경우도 있었는데
왜 그런지 알수 있을까요?..
답변 2
0
0
일단 크롤링은 정상 동작하는 것을 확인하였습니다.
원인은 수강생님의 특정 테이블이나 레코드에 락이 걸려있어서 인듯해요. 해결방법은 터미널 모드로 mysql 터미널 모드로 들어가신 후, 아래와 같이 프로세스들을 확인하고, 의심(?)되는 것을 킬하면 됩니다.
mysql> show processlist; (프로세스 확인)
+----+-----------------+-----------+------+---------+------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+------+---------+------+------------------------+------------------+
| 4 | event_scheduler | localhost | NULL | Daemon | 98 | Waiting on empty queue | NULL |
| 10 | root | localhost | NULL | Query | 0 | starting | show processlist |
+----+-----------------+-----------+------+---------+------+------------------------+------------------+
2 rows in set (0.00 sec)
mysql> kill 10; (의심되는 아이디 킬하기)
mysql> unlock tables; (모든 테이블 unlock 하기)
하지만, 이런 부분이 어렵다면, mysql을 재실행한 후 실행하면 좋을 것 같습니다.
mysqld restart