mysql 8 로 DB이전 문제

임종필·2022년 5월 17일
1

개발 프로젝트를 임시서버에 설치하여 개발하다가 서비스를 위한 서버로 이전하는 작업을 진행하였습니다.

그런데, mysql8로 이전하려고 하니 그전 변수형과, 문자셋이 맞지 않는다는 에러를 접하게 되었습니다.

그래서 뒤늦게 mysql8의 변경사항을 점검하게 되었습니다.

우선 이전 성공은했으니, 가볍게 목록을 나열하고 나중에 하나하나 무슨 의미인지 다시 추가해보도록하겠습니다.

int 변경

처음 만난에러는 우선

Warning (Code 1681):integer display width is deprecated and will be removed in a future release

sql dump 파일을 보면
int(11) 요렇게 선언되어 있는데, 이것을 그냥 int 로 변경합니다.

그렇게 해서 등록하면 int 가 10으로 변경되어 있는 것을 확인할 수 있습니다. 문서를 보니 그전 11과 10이 같은 것 같습니다.

ini(11) => int

문자셋 변경

mysql8 부터 문자셋(CHARACTER SET)이 utf8mb4 로 변경되고
COLLATE 는 utf8mb4_0900_ai_ci이 기본 값으로 세팅되어 있습니다.

CHARACTER SET = utf8mb4, COLLATE = utf8mb4_unicode_ci;

그런데 여기서 utf8mb4_0900_ai_ci 을 사용하다보면
한글로 정열과 검색에서 문제가 생깁니다.
가나다 와 ㄱㅏㄴㅏㄷㅏ를 같은 순서로 인식한다고 하는 것 같습니다.
그래서 예전에 사용하던 utf8mb4_general_ci 이로 바꿔줍니다.

CHARACTER SET = utf8mb4, COLLATE = utf8mb4_general_ci;

비교 날짜 최소값 1970-01-01 00:00:00

날짜 유무 판단할때 null 이나 0000-00-00 00:00:00 등으로 비교하는데, 기본 값이

0000-00-00 00:00:00 => 1970-01-01 00:00:00

로 변경되었습니다. 퀴리의 이부분을 찾아서 바꿔줍니다.

그외에도 php를 사용하는 경우 mysqli를 새로 설치하거나
php 7.4 이하를 설치한 경우
보안셋을 예전것으로 다운그래이드 조치 등이 필요할 수 있습니다.

profile
프롭테크 프로그래머

0개의 댓글