MySQL
-
Node.js에서 MySQL 연동 실패 해결 (MySQL 8)Knowledge 2021. 1. 14. 19:56
너무나 잘 돌아가던 Node.js 서버 코드를 다시 돌리던 중에 황당하게도 아예 연결이 되지 않는 현상이 나타났다. 당황해서 로그를 확인하니 다음과 같은 에러가 나고 있었다. Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client 마지막으로 코드가 돌던 때와 약간 시차가 있기는 했지만 사실 근 1년이 넘도록 AWS에서 잘 돌아가고 있던 코드였기에 코드 자체의 에러보다는 그 사이에 뭔가 설정이 바뀌었을 가능성이 더 높았다. 한참을 찾았는데 역시나 예상대로였다. 문제의 원인과 해결책에 대해 남겨본다. 원인 MySQL 8부터..
-
MySQL AUTO_INCREMENT 컬럼 초기화Knowledge 2019. 11. 5. 16:48
MySQL을 이용해서 개발 중에 Primary Key, AUTO_INCREMENT로 설정한 한 컬럼이 있었다. 그리고 이 테이블은 레코드가 추가되고 삭제되기를 반복하는 테이블이었다. 그런데 시나리오가 추가되며 이 컬럼의 값이 처음 예상보다 빠른 속도로 증가하는 문제가 발생했다. 실제 레코드는 4000개쯤 되는데, 신규로 추가된 레코드의 컬럼값은 10만단위였다. 처음 생각한 해결책은 INT로 되어있는 컬럼 타입을 unsigned로 변환하는 것이었다. 이 경우 보수적으로 계산해도 충분한 값이 나와서 사실상 사용에 문제가 없었다. 그런데, 사실 이 id값이 내부적으로만 사용되고 외부에는 참조가 되지 않는 값이기에... 기존 값들을 1부터 오름차순으로 반영하고 추가되는 값은 다시 그 이후로 증가하도록 리셋하는 ..
-
MySQL 데이터베이스의 characterset 언어를 UTF8로 변경하기Knowledge 2019. 9. 30. 14:19
여전히 간단하게 사용하기에는 가장 좋은 관계형 데이터베이스는 MySQL인 것 같다. 그런데 MySQL에서 가장 흔히 하는 실수가 기본 언어셋을 변경하지 않는 것이다. 과거의 유물이어서 그런 탓이겠지만 MySQL의 기본 언어는 latin1으로 설정이 된다. MySQL을 설치한 상태에서 DB를 만들고 사용하면 한글이나 다른 유니코드 데이터가 깨지는 것을 경험할 수 있다. 이런 상황이 벌어지면 DB 설정문제라는 생각을 떠올리기 전에 만든 코드가 잘못되었는지 먼저 체크하게 되는 것이 개발자의 본능이기에 설치 후에는 잊지 말고 MySQL의 언어셋을 변경해 주어야 한다. MySQL 설정 파일인 my.cnf 파일을 연다. 의도적으로 위치를 변경하지 않았다면 우분투에서의 설정 파일의 위치는 다음과 같다. $ vi /e..