insert / update 시 wr_option 에서 오류가 나는데
어떻게 해결을 해야 할까요
SQL오류(1265): Data truncated for column 'wr_option' at row 1
쿼리문을 보면 해당 칼럼의 값이 wr_option = 'html1,,' 이렇게 되는데
이 부분이 에러가 납니다.
에러 나는 php버전은 8.4 입니다.
그런데 같은 소스로 제작한 다른 사이트는 php7.3 인데
여기서는 에러가 안나는데 왜 그럴까요?
DB에 해당 필드 속성은 이렇습니다.
`wr_option` SET('html1','html2','secret','mail') NOT NULL,
혹시 같은 경험 있으신 분 조언 좀 부탁드립니다~
어떻게 해결을 해야 할까요
SQL오류(1265): Data truncated for column 'wr_option' at row 1
쿼리문을 보면 해당 칼럼의 값이 wr_option = 'html1,,' 이렇게 되는데
이 부분이 에러가 납니다.
에러 나는 php버전은 8.4 입니다.
그런데 같은 소스로 제작한 다른 사이트는 php7.3 인데
여기서는 에러가 안나는데 왜 그럴까요?
DB에 해당 필드 속성은 이렇습니다.
`wr_option` SET('html1','html2','secret','mail') NOT NULL,
혹시 같은 경험 있으신 분 조언 좀 부탁드립니다~
답변 1개 / 댓글 1개
채택된 답변
+20 포인트
선생님 오류는 MySQL/MariaDB에서 SET 타입 컬럼에 잘못된 값이 들어갈 때 현상입니다.
PHP 7.x에서는 SET 컬럼에 잘못된 값이 들어가도 경고 없이 무시하거나 빈 값으로 처리되는 경우가 많았습니다.
하지만 PHP 8.x 이상에서는 MySQL 드라이버가 더 엄격하게 동작하면서, SET 정의에 없는 값('')이 들어가면 Data truncated 에러를 발생시킵니다.
즉, 같은 코드라도 PHP 버전과 MySQL 드라이버 동작 차이 때문에 에러 발생 여부가 달라진 것이지요.
하여
이미 기존디비 에 데이터값이 잘못 들어가있는 상황이라면 업데이트로 수정해 보시기 바랍니다.
UPDATE g5_board_table SET wr_option = REPLACE(wr_option, ',,', ',');
PHP 7.x에서는 SET 컬럼에 잘못된 값이 들어가도 경고 없이 무시하거나 빈 값으로 처리되는 경우가 많았습니다.
하지만 PHP 8.x 이상에서는 MySQL 드라이버가 더 엄격하게 동작하면서, SET 정의에 없는 값('')이 들어가면 Data truncated 에러를 발생시킵니다.
즉, 같은 코드라도 PHP 버전과 MySQL 드라이버 동작 차이 때문에 에러 발생 여부가 달라진 것이지요.
하여
이미 기존디비 에 데이터값이 잘못 들어가있는 상황이라면 업데이트로 수정해 보시기 바랍니다.
UPDATE g5_board_table SET wr_option = REPLACE(wr_option, ',,', ',');
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.