반응형

배경

CI / CD 파이프라인을 구축하여

깃허브에서 코드 푸시를 통해 AWS 클라우드에 배포하는 것 까지 자동화 하기 위해 공부하고 있었다.

 

자세한 과정은 다음과 같다.

깃허브 master 브랜치에 푸쉬하면

travis.ci에서 해당 코드를 바탕으로 테스팅을 시도하며

테스트를 통과하면 도커 이미지를 생성하고 도커 허브에 레포지토리를 만들고

이를 바탕으로 AWS Elastic Beanstalk과 RDS에 연동되어 서버와 데이터베이스를 띄운다.

 

그런데 이러한 과정에서

프론트 파일은 제대로 배포에 성공했으나

서버와 데이터베이스 쪽에 문제가 발생했다.

 

 


오류는 다음과 같다.

 

data: {code: 'ER_BAD_DB_ERROR', errno: 1049, sqlMessage: "Unknown database 'myapp'", sqlState: '42000', index: 0, …}

mysql 에러 sqlState: '42000'

배포과정에서 AWS에서 RDS에 mysql 인스턴스를 생성해서

서버와 연결하여 사용하려는데

위 코드와 사진과 같이 에러가 발생했다.

 

위에 설명한 것과 같이 여러가지 과정이 혼합되어 있고 다 처음해보는 것이라

어디서 문제인지 한참을 고민했다.

 

"Unknown database 'myapp'"

그러다가 위와 같은 에러가

서버에서 데이터베이스에 쿼리를 날릴 때 해당 데이터베이스가 존재하지 않아서 발생하는 것임을 확인했고,

RDS에서 돌리고 있는 mysql에 직접 연결해서 데이터베이스를 확인해보니

내가 생성하고자 했던 myapp이라는 데이터베이스가 존재하지 않아서 에러가 발생했다는 것을 알았다.

 

에러 원인

그동안 깃허브에 푸쉬하고 자동배포가 되면서

mysql에서도 myapp이라는 데이터베이스가 자동적으로 생성될 것이라 생각했다.

 

개발환경에서는 미리 데이터베이스를 생성하는 코드를 작성해두고 테스팅해서

mysql도 자동배포가 되었는데, 실제로 배포환경에서는 개발환경처럼 mysql을 서버 환경과 같이 두지 않고

Beanstalk과 RDS로 두개로 구분해주어서 생성했기 때문에

내가 만든 환경에서는 RDS를 통해 mysql 인스턴스를 생성하고 쿼리를 통해 초기 세팅을 해주는 작업이 필요했던 것이다.

 

 

 

 

 

 

 

+ Recent posts