500 에러 왜 발생하는 걸까요?

500 에러가 발생해서 문제의 의도 외의 방법으로 푸는 것이 가능합니다.

근데 이게 왜 에러가 터지는 지 소스코드를 봐도 잘 모르겠네요...

107번 또는 116번 줄 밑에서 터지는 것 같은데 idx >= 10인 일부 유저만 500에러가 터지는 경우의 수가 있나 싶습니다.

테이블을 생성할때 컬럼의 데이터 타입을 정의할테니 일부 유저의 idx 또는 user['resetCount'] 값이 int 가 아니라 {(MAXRESETCOUNT-1)-user['resetCount']} 이런 데서 타입 에러로 터지는 것도 불가능할 것 같습니다.

500 에러가 터지는 이유를 아시는 분이 계실까요?

#web
작성자 정보
답변 1
avatar
rbtree_work
대표 업적 없음

안녕하세요,

코드의 cur.execute(updateSQL, (str(user['idx']))) 에서 문제가 발생합니다.
길이 1짜리 tuple을 만들어서 넘기고 싶은 경우 (val, ) 과 같이 작성해야 합니다. (val) 과 같이 작성하면 val과 동일하게 됩니다.
그러므로 길이가 2 이상인 문자열이 해당 구문에 들어가는 경우, 문자열을 순회할 때 각 글자를 돌게 되므로 placeholder(?)는 1개이지만 넘어오는 인자의 개수가 달라 익셉션이 발생하게 됩니다.
그러므로 cur.execute(updateSQL, (str(user['idx']), )) 로 수정해야 올바른 코드가 되겠네요.

해당 버그는 수정할 예정이 없으니 편하게 사용하셔도 됩니다.

2024.07.26. 18:28
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기