mysql 테이블의 컬럼 최대값을 잘 설정해야 하는 이유?!( id 값이 최대값을 넘었을 때 경험)
배경
-
3/5일 토요일 새벽부터 등록된 신규 회원의 kakao_id 가 모두 동일한 값으로 db에 등록되었다.
-
3/7 월요일 문의전화가 오전부터 발생 1.kako_id 로 로그인 불가 2.회원들의 kakao_id 가 동일함 확인
당시 문제가 발생했을때 kakao에서 넘겨주는 값이 문제라고 생각했다.
회원쪽 담당자가 디버깅을 해봤고 (신규 회원을 찾을 수 없어서.. 다른 팀 사람에게 도움 요청) 처음 디버깅시 값이 똑같이 온다고 생각했고 개발자가 kakao develop에 문의 글을 남겨서 답변을 기다렸다.
회원쪽 담당자가 여러번 디버깅을 해보면서 알게된 사실은
kakao_id는 제대로 왔고
db에 등록시 값이
mysql max int value
=2147483647
이었다.
원인
우리 회원 db 의 kakao_id 컬럼의 데이터 타입이 int 였다.
허용범위가 초가되어서 2147483647
로 동일한 값이 등록되었다.
최초 개발했을때 kakao_id가 어떤 값으로 오고 폭을 고려해서 개선해야 겠다고 아무도 생각못했었다.
운영을 하면서 생각지도 못한 에러가 많이 나오는거 같다.
방법
-- kakao_id 컬럼의 데이터 타입을 수정-- (1)ALTER TABLE [tablename] CHANGE [columnName] [columnName] BIGINT not null default '0'-- (2)alter table [table_name] modify [column_name] BIGInt
참고
//How do I change the data type for a column in MySQL? 참고1