에러 발생 예전에 회사에서 원격으로 근무하고 있던 동료 개발자로부터 에러가 발생했다고 공유 받았다. DB는 MySQL이며 아래와 같은 에러 메세지가 떴다고 한다. ERROR 1129(00000): Host '*' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts' 에러 원인 검색해보니 바로 원인을 알 수 있었다. 원격 서버에서 MySQL 서버로 연결한 뒤 close를 하면 MySQL은 비정상적인 접속으로 판단해 해당 IP를 블락 처리한다고 한다. 이 때 MySQL에서 이와 같은 비정상적인 접속 요청 수를 카운팅해서 global.max_connect_errors에 지정된 값을 넘기면 자동 블락 처리가 되어 생..
MySQL
개발을 하며 MySQL의 Timestamp가 이상하게 조회되는 상황에 맞닥뜨렸다. 발생한 이슈와 원인, 해결한 방법 순서대로 기록해둔다. 이슈 발생 간단하게 정리하면 데이터 조회 시 특정 일자의 하루 동안 저장된 데이터를 조회해야 했고, 이를 위해서 특정 일자의 시작 시간(yyyy-MM-dd 00:00:00)과 끝 시간(yyyy-MM-dd 23:59:59)을 Timestamp 타입으로 만들었다. 예를 들어 일자별 회원가입 현황을 데이터테이블로 산출하려고 한다. 조회 시에는 JPQL을 사용했고, 테스트 용으로 아주 간단하게만 구현해두었다. /** * 일자별 회원가입 현황 * @param * @return */ public List getDailySignUp(Integer start, Integer leng..
MySQL에서 쿼리를 사용하다 보면 형변환이 필요할 때가 있다. 데이터 타입이 CHAR인 컬럼을 조회할 때 숫자 타입으로 바꿔서 조회하는 것이 필요한 경우가 있다. 특히 숫자로 이뤄진 컬럼인 줄 알고 정렬을 했는데 1, 11 111, 2, 23, 234, 33, ... 이렇게 정렬되는 경우가 있다. 아마 컬럼의 타입이 INT가 아니라 VARCHAR이기 때문일 것이다. 이때 MySQL에서는 CAST 함수 CONVERT 함수 둘 중 하나를 사용해 데이터 형변환을 할 수 있다. 변환 가능한 데이터 형식은 다음과 같다. BINARY[(N)] CHAR[(N)] [charset_info] DATE DATETIME DECIMAL[(M[,D])] JSON NCHAR[(N)] SIGNED [INTEGER] TIME UN..
최근 MySQL DB에서 data source rejected establishment of connection, message from server: "too many connections" 이라는 에러가 발생한 적 있다. 잘 되다가 갑자기 이런 에러가 떠서(코드나 DB 설정 등을 수정한 적도 없고, 개발자 여러 명이 어플리케이션 실행을 시킨 상황도 아닌 것으로 파악되는데,,) 당황스러웠지만 우선 에러를 직독직해 하면 알 수 있듯 Connection 문제라고 하니 연결된 Connection 수 먼저 체크했다. 정리해보자면 이 에러는 DB와 연결된 client의 수, 다른 말로는 DB와 연결된 접속 수가 너무 많아서 발생한 에러인데, 또 다시 같은 에러가 발생할 수 있으므로 DB에 최대한으로 접속 가능한..