버전
mysql-8.0.22
apche-tomcat-8.5.61
jdk-14
eclipse-2020-12
오류
java.lang.ClassNotFoundException:com.mysql.cj.jdbc.Driver 오류
mysql-connector-java-8.0.22.jar 파일을
1. C:\Program Files\java\jdk-14\lib 에 넣고 BuildPath로 설정해준다.
=> 실패
2. D:\apache-tomcat-8.5.61\apache-tomcat-8.5.61\lib에 넣는다
=> 실패
3. 현재 진행중인 웹 프로젝트의 webapp\WEB-INF\lib에 넣는다
=> 성공
No mapping found for HTTP request with URI 오류
dispatcher를 찾을 수 없다고 계속그럼
-> 프로젝트 오른쪽 마우스클릭 -> Maven -> updates project... 클릭
Several ports (8005, 8080) required by Tomcat v8.5 Server at localhost are already in use. 오류
출처: myblog.opendocs.co.kr/archives/1702
1. cmd-> netstat -a -n -o -p tcp
내가 쓰려는 포트인 8080이 어느 pid에서 사용하는지 확인
2. taskkill /f /pid (pid번호)
해당 pid 프로셋 강제 종료
org.springframework.jdbc.CannotGetJdbcConnectionException:Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: 오류
Connection refused메시지가 나온것은
2가지 이유가 있을수 있다고 한다.
1) DB서비스 정상적으로 기동되지 않은경우
=> 포트충돌등의 문제가 없는지 메시지를 확인하셔야 합니다.
2) 정상적으로 기동은 되었으나
계정에대한 접근권한설정이 제대로 되어 있지 않은경우
=> 해당 사용계정에대한 localhost와 remote에대하여 구분하여 접근 권한 설정한다음.
sql developer등의 DB Client툴에서 접속여부 확인
알고보니 MySQL의 경우에는 8시간 동안 request가 오지 않으면 Connection을 끊어버리기 떄문이라고 한다. 서버를 켜놓고 DB를 연동한 상태에서 오래 놔두면 안될 것 같다.
이럴경우의 해결방법은
private String url = "jdbc:mysql://localhost/spring5fs?characterEncoding=UTF8&serverTimezone=UTC&autoReconnection=true&validationQuery=select 1&testWhileIdle=true&timeBetweenEvictionRunsMillis=7200000";
이렇게 DB를 사용하기 전에 Connection이 유효한지 검사를 하는것이라고 한다.
validationQuery의 값은 사용하는 DBMS마다 다르므로 자신에 맞는 DBMS를 구글링해서 알아보도록하자.
하지만 이상하게도 나의 경우는 DB서비스가 다운된 상태였다.
MySQL 프로그램을 실행해보니.
여기 Information란에 빨간 글씨로 no connection established 이렇게 씌여져 있었다.
이럴 경우엔 MySQL의 서비스가 다운된 것이기 때문에 서비스->MySQL 우측 마우스클릭 시작 누르면 되는 것이었다.
그럼 다시 DataBase가 생기고 Connection이 생긴다.