선택등록 기능 추가후 등록시 Data too long for column에러가 뜨는데 데이터길이 문제가 아닌거같습니다.

조회수 474회

감사합니다

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • "연풍산업사 공영홈쇼핑 출고 건은 입고 생략"이라니... 고생 많으시네요.

    폼이 문제를 일으킨다면, 다음 순서대로 원인을 찾아나가시면 됩니다. 아무리 감이 없기로서니 무조건 다음 셋중 하나가 문제거든요.

    1. 애초에 클라이언트단에서 문제가 있는지 점검. regCheckSave() 함수 안에 console.log($("#listForm").serialize());만 넣고 나머지를 다 주석 처리한 다음에 실행시켜서 개발자도구 콘솔창을 한번 확인해 보세요. 넘기고 싶은 데이터가 정해진 형식에 맞게 나와야 합니다. 왠지 이 이슈는 이 단계에서 걸리고 있을 거 같네요. (같은 필드의 값이 여러 개가 겹쳐서 들어온다거나)
    2. 클라이언트 → 서버 전송간 문제가 있는지 점검. 브라우저 개발자도구의 Network 도구를 열어놓은 다음 regCheckSave() 함수의 내용을 그대로 살려서 실제로 AJAX를 실행해 봅니다. POST /inout/orderSave.do 요청에 관한 로그가 찍힐 것인데 요청/응답 각각의 헤더/본문이 뭐라고 나오는지, 애초에 HTTP 상태코드는 뭔지 확인해 보세요. 가끔 1단계는 문제가 없는데 2단계에서 문제가 있는 경우 -- 파일 전송을 해야 하는데 enctype=multipart/form-data을 적용 안했다든가 -- 가 있습니다.
    3. 서버 처리에 문제가 있는지 점검. 혹시 (여기엔 해당없지만) CORS를 위반하고 있다거나 XSS 필터링에 걸린 것은 아닌지, 해당 라우트를 처리하는 해당 메소드의 형식에 맞게 값이 넘어갔는지, 값만 정확히 넘어온다면 정말 원하는 동작을 그 메소드가 제대로 하는지 (즉 메소드 자체에 버그는 없는지) 점검해 보세요. 재수가 없으면 DB와의 마찰이 문제가 될 수 있습니다. (DB 컬럼 타입이 char(3)인데 2글자를 입력하려고 했다든지)

    + 체크박스를 써서 폼을 제출하면 대충 다음과 같은 요청본문이 생깁니다.

    ...&ckbox=187&ckbox=188&ckbox=189&...
    

    모질라재단에 따르면 서버 코드는 이걸 목록으로 변환해 처리하는 부분이 있어야 한다고 하네요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)