728x90
엑셀파일을 웹에서 올리면 파싱해서 DB에 학생 명단을 추가시켜주는 기능을 하고 있었고 DB 구조중에 idx가 tinyint로 설정하고 슉슉 진행했다. 근데 올라가야할 명단은 500개가 넘는데 자꾸 127개만 들어가는 것
어째서일까 하면서 foreach를 돌리면서 insert를 계속 해서 그런가?? 해서 동적으로 쿼리를 생성한 뒤에 foreach가 끝난 후 쿼리를 실행했는데도 안된다.
원인은 tinyint에 있었다. tinyint의 범위는 -128~127인데 내가 자꾸 500개 넘는걸 넣으려고 하니까 중간에 끊긴 것이다
아이고 멍청해라 ㅁㄴㅇㄻㄴㅇ런ㅁ아럼ㄴ아ㅣ럼닐;ㅏㅓㅁㄴ이ㅏ럼ㄴ아ㅣㄹ;ㅓㄴㅁ아ㅣㄹ
성능 좀 높인다고 해봤더니 먼저 생각도 안해서 이런 참사가....
다행이 알아내고 tinyint를 바꿔주니 잘 작동하더라
다른 오류 하나는 저 tinyint 오류 때문에 별로 신경을 안썼던건데 foreach안에서 var name으로 변수를 선언하고 이름을 넣어주는데 자꾸 아무 값도 안되서 뭐지뭐지 하는데 foreach 밖에서 선언해서 하니까 이것도 잘 되더라
원인이 뭔진 자세히 모르겠다 나중에 한번 찾아봐야지
반응형