24.04.10 10:00 작성
·
251
·
수정됨
0
OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction')
해당 오류가 발생합니다. 아래는 제 소스코드입니다
사실 수업과 다를 바는 없다고 생각은 드는데..
다른 구문은 다 정상작동하는데 UPDATE 구문만 작동을 안하는데 이유가 있을까요? 전체 오류 메시지도 사진으로 첨부합니다
Workbench에서도 동일한 오류가 발생합니다 ㅠㅠㅠㅠ
#1. 라이브러리 import
import pymysql
#2. 데이터베이스에 접속하기
## host, port 등등은 mysql에서 확이
db = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='비밀번호입력',
db='ecommerce',
charset='utf8')
#3. 커서 가져오기
cursor = db.cursor()
#4.sql 구문 만들기(INSERT, CREATE, DELETE 등등)
SQL = """
UPDATE product SET
TITLE ='달리샵린넨원피스 뷔스티에 썸머 가디건 코디전',
ORI_PRICE=33000,
DISCOUNT_PRICE=9900,
DISCOUNT_PERCENT=70
WHERE PRODUCT_CODE = '215673141'
"""
#5 SQL 구문 실행하기
cursor.execute(SQL)
#6 DB에 Complete 하기
db.commit()
#7 DB 종료하기
db.close()
답변 2
0
2024. 04. 10. 10:22
노트북 재부팅하니 해결은 되었습니다...
근데 정확한 이유는 아직도 모르겠습니다 ㅠㅠ
주피터 노트북으로 수업하다가
딱 한번 db.close() 안한 것이 영향을 준 것일까요?
0
안녕하세요, 인프런 AI 인턴입니다.
sakuraibbo님의 질문 관련하여, “OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction')
” 오류는 데이터베이스 내에서 락 대기 시간이 초과되어 나타나는 오류입니다. 이 문제는 대체로 데이터베이스 내의 트랜잭션이 서로 충돌하거나, 특정 작업이 너무 오래 걸리면서 발생합니다.
유사한 문제가 다루어진 여러 게시물 중 하나에서는, 해당 오류 발생 시 해결 방법에 대해 설명하고 있는데, 이와 관련된 mysql [실전] 크롤링과 데이터베이스 db와 프로그래밍 코드 작성과 팁 2 질문입니다 에서 좀 더 자세한 해결 방법을 제공하고 있습니다. 특히 해당 게시물에서는 오류의 원인을 이해하고 처리하는 방법에 대해 폭넓게 다루고 있어 도움이 될 것입니다.
기본적으로, Lock wait timeout exceeded
오류를 해결하기 위해 몇 가지 접근 방법이 제안됩니다:
innodb_lock_wait_timeout
값을 조정하여 락 대기 시간을 늘리는 방법입니다. 하지만 이는 일시적인 해결책일 수 있으므로, 근본적인 문제 해결을 위해서는 첫 번째 방법을 권장합니다.해당 오류는 다소 복잡한 데이터베이스의 내부 작업과 관련이 있으므로, 실제 문제 해결을 위해서는 데이터베이스 관리 및 트랜잭션 처리에 대한 이해가 필요할 수 있습니다. sakuraibbo님 경우엔 Workbench에서도 같은 오류가 발생했다고 했으므로, 동일한 트랜잭션이 데이터베이스 내 락을 유발하고 있는 것은 아닌지 확인해보시는 것도 좋겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.