본문 바로가기
Django

Out of range value for column (SQLite is working but MySQL is not working)

by Django_ 2020. 5. 18.
반응형

저는 고객에게 입력받는 텍스트 데이터의 경우 안전성을 위해 당연한 이야기겠지만 항상 form 검증을 거치고 있습니다.

(나 혼자만 쓰는거라면 내가 공격하지 않으면 뭐 큰일이 없겠죠? ㅎ)

저는 혹시 모를 부분을 방지하기위해 한번 딕셔너리로 정리하는 편인데요

이것도 개발 방식에 따라 매번 달라지는것 같습니다.

프론트엔드와 백엔드를 나누냐 장고 개발자들이 장고 템플릿을 써서 개발하는지 그런게 많이 좌우할것 같긴합니다.

저는 독학이다 보니 협업도 안해봤고 프론트, 백엔드로 안해봤지만

혼자 REST API를 만들고 하다보니 나눌수밖에 없는 경우가 생기기는 하더라고요

order_dic = {}
order_dic['order_date'] = order_date #str
order_dic['company'] = company #str
order_dic['business_code'] = business_code #int
order_dic['address'] = address #str

헌데 이렇게 사용하다보면 개발 환경에서는 저장이 잘 되다가 서버에서 에러가 터지는 경우가 있습니다.

MySQLdb._exceptions.DataError: (1264, "Out of range value for column 'field_name' at row 1")

음... 

안될거면 다 안되어야지 왜SQLite는 되고 MySQL은 안되는거지??ㅠ

 

"길이가 잘못된건가?"

이거 수정하고 push. 

실패!

 

"mysql은 문자열을 숫자열로 바꿔줘야하나?"

이거 조금 수정하고 push ...

원인을 파악하는데 이유를 도통 못찾았습니다..

 

으아아아아아아아아아아아아아!

 

이럴땐...구글링!

 

아!!!!!!

 

각 SQL별 integer 최대범위

 

SQLite(8바이트) = -9223372036854775808 ~ 9223372036854775807

MySQL(4바이트) =  -2147483648 ~ 2147483647

 

MySQL 서버를 사용하신다면 Char를 사용하던가 Bigint(8 바이트)가 맞을듯하네요 ㅠ

반응형

댓글