반응형
AWS
springBootVersion = '2.1.7.RELEASE'
Gradle
openjdk version "11.0.14.1"

 

오전에는 접속이 잘 되던 AWS에 deploy.sh이 갑자기 화면이 안뜨기 시작했습니다.

갑자기 접속이 안되는 상황

왜 그럴까?

그럼 일단 로그를 실행해봅니다.

vim nohup.out

맨 밑으로(shift + G) 

The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured.

8080 포트 접속이 실패했습니다.

 

급히 구글링을 시작했습니다.

찾아보니까 서버를 내렸을 때도 8080 포트가 사용 중인지 확인해보고 사용 중이라면 kill 명령어로 죽이면 된다고 합니다.

PID 검색 : lsof -t -i :8080
서버를 내렸는데도 8080이 사용중이라고 할 때 확인하기 : lsof -i tcp:8080
8080 포트 죽이기 : kill $(lsof -t -i:8080)
PID번호로 포트 죽이기 : sudo kill -9 {PID번호}

lsof
kill 8080
다시 실행!

Build successful이라고는 뜨지만 결과 페이지에서는

whitelabel error page

수정을 잘못한 것인지 로그를 다시 확인해보니

java.sql.SQLException: table ' ' doesn't exist

구글링을 또 해보겠습니다.

java.sql.SQLException: table ' ' doesn't exist로 검색.

검색해보니 기본 세팅은 대소문자 구분을 한다고 합니다.

그런데 제가 만든 db를 보면

databases 확인 후 해당하는 db를 사용한다.
show tables;

오류에서 나왔던 문구를 보면 spring_session이 대문자인데 제 table은 소문자였습니다.

그럼 설정이 어떻게 되어있는지 확인해보겠습니다.

show variables like 'lower_case_table_names';

0 : 테이블 생성 및 조회 시 대소문자 구분 ← 기본 세팅
1 : 입력값이 대소문자 상관없이 소문자로 인식하여 소문자로 파일 생성
2 : 윈도우에서 대소문자 구분해서 테이블을 가지고 옴

기본 값이 0으로 나오기 때문에 1로 변경해주겠습니다.

서버에 ssh로 접속 후

vi/etc/my.cnf

my.cnf 파일 안에서 [mysqld] 하단에 lower_case_table_names=1을 추가하고 저장하려고 했으나..

삭제할 수 없습니다.

읽기 파일인데 수정하시겠습니까?

저 문구가 떴습니다.

이건 수정하면 혹시나 안 좋은 일이 추가로 발생할 수도 있겠구나 라는 생각이 들어서 

그럼 table에 들어있는 것도 없으니 다시 만들자 라는 생각으로 삭제하고 다시 만들었습니다.

drop table;
대문자로 생성.

대문자로 생성하니까 오류도 안 뜨고 잘 실행됐습니다

접속이 잘 됩니다.

관련글

https://roobi-story.tistory.com/20?category=1057206

 

[SpringBoot] 시작

같이 스터디를 하는 형의 소개로 같이 공부하게 될 책입니다. 처음 사용해볼 예정이지만 인텔리 J와 SpringBoot. 열심히 공부해보겠습니다!

roobi-story.tistory.com

반응형
복사했습니다!