최초 작성일 : 2021-10-09 | 수정일 : 2021-10-09 | 조회수 : |
Tags #MySql이미 존재하는 프로젝트를 Mysql 5.7 이전 버전에서 5.7로 업그레이드 후 Data 를 밀어 넣고 프로젝트를 올리면
보통 데이터 삽입 로직에서 에러를 맞게 된다.
이는 대부분, '등록일' 필드와 '수정일' 필드 중 '수정일' 필드가 공백으로 insert query상 작성되어 아래와 같은 에러를 맞게 되는 것.
기존 버전에서 Insert 잘 되던 소스인데 갑자기 잘못된 날짜 값이라며 에러를 낸다.
이 때 대처법. 아래 문서를 참조하였다.
조치 내용.
둘 다 아래와 같은 설정값이 들어 가 있다.
이 중 NO_ZERO_DATE 가 이를 막아 에러를 낸 것. MySQL5.3쪽에서 이를 확인 해 보면 그저 공백이다.
MySQL5.7부터는 유효성 검사를 더욱 철저히 하여 예기치 않은 오류를 막자는 취지이나
기존 프로젝트가 갑자기 돌아가지 않는 상황에서는 강화 정책을 이 전 버전과 맞추어 해결함이 나은 듯.
물론 주어진 시간과 여유가 주어진다면 이 제약조건에서도 문제 없는 소프트웨어를 만드는 것이 더 이상적이다.
두번째 쿼리는 현재 커넥션 된 지금 콘솔 세션에서의 sql_mode를 지워주는 거라서 안해줘도 된다.
첫번째 글로벌 설정만 변경 후 exit 후 재접속 해서 확인 해 봐도 아래와 같이 변경 되어있다.
즉, 첫번째 GLOBAL sql_mode 쿼리는 꼭 수행 해야 함.
Global_mode 는 변경 해 주지 않고, 두번째 쿼리만 수행하면 exit 후 재 접속시 원래대로 돌아와 있고
웹 프로세스상 커넥션도 기존대로 유지되므로 위 문제는 해결 되지 않는다.