본문 바로가기
리눅스

MySQL, Ubuntu] 배포한 프로젝트가 데이터베이스 인식을 못할 때

by 김마리님 2020. 7. 7.

톰캣의 context.xml이 프로젝트 내부에 있는 context.xml을 오버라이딩 하지 않기 때문이다. 이클립스는 자동으로 오버라이딩 하지만, 리눅스에서 실행할 경우 오버라이딩 하지 않기 때문이다.

 

이 오류를 확인할 수 있는 명령어부터 보자.

톰캣을 실행하면서 뜨는 오류는 catalina.out 파일에 저장된다. catalina.out 파일은 var/log/tomcat8 내부에 있다.

 

(명령어)

cd /var/log/tomcat8/
ls

로 catalina가 있는지 확인해보자.

이제 오류를 확인해보자. 파일의 마지막을 확인하는 명령어는 다음과 같다.

tail -f catalina.out

다음과 같이 오류를 확인할 수 있다. 연결이 되지 않는다고 한다.

 

해결법은 간단하다. 톰캣의 context.xml을 열어서 MySQL의 컨텍스트를 입력해주면 된다.

 

MySQL의 컨텍스트는 톰캣의 문서에서 확인 가능하다.

 

http://tomcat.apache.org/tomcat-8.5-doc/jndi-datasource-examples-howto.html#MySQL_DBCP_2_Example

 

Apache Tomcat 8 (8.5.57) - JNDI Datasource How-To

JNDI Datasource configuration is covered extensively in the JNDI-Resources-HOWTO. However, feedback from tomcat-user has shown that specifics for individual configurations can be rather tricky. Here then are some example configurations that have been poste

tomcat.apache.org

여기서 주의할 점이 있다.

톰캣의 문서가 오래되었기 때문에, 조금 수정해줘야 하는 부분이 있는데,

1. driverClassName="com.mysql.cj.jdbc.Driver" : 드라이버에서 중간에 .cj를 추가해줘야 한다.

2.  url="jdbc:mysql://localhost:3306/apple?serverTimezone=Asia/Seoul"/ : url에서 쿼리스트링 하나를 추가해줘야 한다. 서버시간을 아시아, 서울로 맞춰줘야 MySQL에 접근이 가능하다.

 

최종적으로 수정한 컨텍스트는 다음과 같다.

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxTotal="100" maxIdle="30" maxWaitMillis="10000"
               username="데이터베이스 아이디" password="데이터 베이스 비밀번호" driverClassName="com.mysql.cj.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/apple?serverTimezone=Asia/Seoul"/>

이 컨텍스트는 다음과 같이 거의 마지막 위치에 추가한다.

 

그럼 데이터베이스 연결에 성공하고, sysout 으로 콘솔에 나오는 값들이 catalina.out 에 도출된다.

반응형

'리눅스' 카테고리의 다른 글

리눅스 기본 명령어  (0) 2020.07.08
리눅스 파일 시스템  (0) 2020.07.08
ubuntu, Tomcat] 루트가 지정되지 않을 때  (0) 2020.07.07
ubuntu] mySQL 설치  (0) 2020.07.07
ubuntu] aws에 프로그램 배포하기  (0) 2020.07.07