hello world

spring Mysql 연결 오류 정리 본문

WEB/Spring .Spring Boot

spring Mysql 연결 오류 정리

sohyun_92 2022. 1. 7. 22:42
728x90

세팅에 하루종일 허비한부분정리..;;

 

package com

import java.sql.Connection;
import java.sql.DriverManager;

import org.junit.Test;

public class MYSQLConnecetionTest {

		private static final String DRIVER = "com.mysql.jdbc.Driver"; //Connection을 구현한 클래스의 이름
		private static final String URL = "jdbc:mysql://localhost:3306/sys"; //mysql 서버 주소
		private static final String USER = "root"; //계정
		private static final String PW = "3636"; // 비밀번호
		
		@Test //jUnit이 테스트함
		public void testConnection() throws Exception{
			Class.forName(DRIVER); //DRIVER라는 이름을 가진 클래스를 찾음
	        
			//DB 계정과 연결된 객체를 Connection 클래스의 인스턴스인 con에 담음
			try(Connection con = DriverManager.getConnection(URL,USER,PW)){ 
				System.out.println(con); //연결된 계정 출력
			}catch(Exception e) { //연결이 되지 않은 예외처리
				e.printStackTrace();
			}
			
	}
}

junit으로 mysql 디비연결 테스트하는데 계속 안됨..

첨에는 putty설정 잘못해서 접속을 못하나싶어서 local에 깔아서 했는데도 이런오류뜨는겨...

 

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

 

 

junit 말고 그냥 클래스에서 jdbc 연결 테스트도 했는데

java.math.BigInteger cannot be cast to java.lang.Long 이런 오류뜸 후 ;;

 

 

그래서 찾아보니까 커넥터 버전문제일수도 있다고하길래 

 

      <!-- Mysql Connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.22</version>
        </dependency>

 

         <version>8.0.15</version>으로 변경함 그니까 저 오류 안뜸 ..ㅂㄷㅂㄷ

 

 

근데 또 이제 이런 오류뜸

 

java.sql.SQLException: The server time zone value '´???¹?±¹ ???ؽ?' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

 

찾아보니까 버전 8부터는 이러케 사용해야한다구한다. 

 

package com

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Dtest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Connection conn;
		try {

		Class.forName("com.mysql.jdbc.Driver").newInstance();
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/sys?useUnicode=true&serverTimezone=Asia/Seoul", "root", "3636");
			System.out.println("Success!");

		} catch (SQLException ex) {
			System.out.println("SQLException:" + ex);

		} catch (Exception e) {

			System.out.println("Exception:" + e);

		}
}

}

 

근데 또 properties에서는 오류남 ...

"serverTimezone" 엔티티에 대한 참조는 ';' 구분자로 끝나야 합니다.

 

이거는 & -> &amp 로 바꿔줘야한다구한다... 

 

 

           <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/sys?characterEncoding=UTF-8&amp;serverTimezone=UTC"/>

 

 

출근하니까 위에꺼도 안된다...

 

?&useSSL=false&serverTimezone=UTC

 

추가하니까 됨 ... 

 

 

삽질끗

Comments