500 에러 왜 발생하는 걸까요?
500 에러가 발생해서 문제의 의도 외의 방법으로 푸는 것이 가능합니다.
근데 이게 왜 에러가 터지는 지 소스코드를 봐도 잘 모르겠네요...
107번 또는 116번 줄 밑에서 터지는 것 같은데 idx >= 10인 일부 유저만 500에러가 터지는 경우의 수가 있나 싶습니다.
테이블을 생성할때 컬럼의 데이터 타입을 정의할테니 일부 유저의 idx
또는 user['resetCount']
값이 int 가 아니라 {(MAXRESETCOUNT-1)-user['resetCount']}
이런 데서 타입 에러로 터지는 것도 불가능할 것 같습니다.
500 에러가 터지는 이유를 아시는 분이 계실까요?
#web
작성자 정보
답변
1
rbtree_work
대표 업적 없음
안녕하세요,
코드의 cur.execute(updateSQL, (str(user['idx'])))
에서 문제가 발생합니다.
길이 1짜리 tuple을 만들어서 넘기고 싶은 경우 (val, )
과 같이 작성해야 합니다. (val)
과 같이 작성하면 val
과 동일하게 됩니다.
그러므로 길이가 2 이상인 문자열이 해당 구문에 들어가는 경우, 문자열을 순회할 때 각 글자를 돌게 되므로 placeholder(?
)는 1개이지만 넘어오는 인자의 개수가 달라 익셉션이 발생하게 됩니다.
그러므로 cur.execute(updateSQL, (str(user['idx']), ))
로 수정해야 올바른 코드가 되겠네요.
해당 버그는 수정할 예정이 없으니 편하게 사용하셔도 됩니다.