결론 : 버전에 맞지 않는 jdbc driver 를 사용하는 경우 위와 같은 오류메시지가 발생할수 있다.

메시지의 내용이 좀 엉뚱맞아서 한참을 헤맸다. 

더 이상한것은 URL IP 끝자리가 100번인데, 1까지만 나오는점이다.

 

상황

이전에 사용하던 DB커넥션 테스트소스를 새로운 mysql db로의 접속테스트 시도하려는데, 위 제목과 같은 오류메시지가 발생.

 

dbeaver에서도 잘 되고, myslq server에 들어가서 상태를 체크해봐도 이상없는데...

pom.xml의 jdbc driver 버전을 올려주었더니 바로 OK ㅠ.ㅠ;;;

 

그런데 이게 왠만큼 버전차이가 발생하면 이상이 없는듯하다.

구 소스에서 사용하던 드라이버 버전이 mysql 5.1.9 버전이었고, 접속하려는 DB의 버전은 8.0.x였다.

드라이버 버전을 5.1.49버전에서 멀쩡하게 돌아가는것으로 보아 해당 버전사이에 어떠한 업데이트가 있었던듯하다.

 

가급적이면 접속하려는 서버의 버전과 맞춰서 사용하자.

 



바른모님의 좋을글이 있어 퍼옴.

 

https://barunmo.blogspot.com/2013/06/mybatis.html



MyBatis Application Project 작업순서

Posted 2019. 7. 9. 11:24

java application project에서 테스트를 위한 작업순서(in Maven 프로젝트)

 

1. pom.xml 추가

  1.1 mybatis 기본 dependency 추가 

  <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.4.1</version>
	</dependency>

 

  1.2 config.xml 설정파일 관련 dependency 추가

<!-- https://mvnrepository.com/artifact/commons-configuration/commons-configuration -->
	<dependency>
	    <groupId>commons-configuration</groupId>
	    <artifactId>commons-configuration</artifactId>
	    <version>1.10</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
	<dependency>
	    <groupId>commons-collections</groupId>
	    <artifactId>commons-collections</artifactId>
	    <version>3.2.1</version>
	</dependency>

  1.3 Config.java, ConnectionFactory.java 생성   

-- Config.java --

public class Config {
	private static Configuration configuration;
	 
    static {
        try {
        	URL url = Config.class.getClassLoader().getResource("config/database.xml");
            if (configuration == null) {
				configuration = new XMLConfiguration(url);
            } else {
            	System.out.println("return configuration from Memory...");
            }
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }   
    public static Configuration getConfiguration() {
        return configuration;
    }
}

--  ConnectionFactory.java -----

public class MyBatisConnectionFactory {
	private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            final String resource = "config/mybatis-config.xml";
            Reader reader = Resources.getResourceAsReader(resource);
            if (sqlSessionFactory == null) {
            	Configuration conf = MyConfig.getConfiguration();    			
    			Properties props = new Properties();    			
    			props.setProperty("driver",	 	conf.getString("jdbc.driver","oracle.jdbc.driver.OracleDriver"));
    			props.setProperty("url", 		conf.getString("jdbc.url","jdbc:oracle:thin:@127.0.0.1:1521:orcl"));
    			props.setProperty("username", 	conf.getString("jdbc.username","test2018"));
    			props.setProperty("password", 	conf.getString("jdbc.password","test2018"));
    			
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader, props);
            }
        } catch (FileNotFoundException fileNotFoundException) {
            fileNotFoundException.printStackTrace();
        } catch (IOException iOException) {
            iOException.printStackTrace();
        }
    }
    public static SqlSessionFactory getSqlSessionFactory() {
        return sqlSessionFactory;
    }
}

 

2. TestMain.java 테스트 (Transaction 처리 포함 테스트)

  ...중략...
  
	public static void main(String[] args) {

		SqlSession sqlSession = null;
		try {
			sqlSession = MyBatisConnectionFactory.getSqlSessionFactory().openSession(false);

			//Mapper 사용하는 방법
			TestMapper testMapper = sqlSession.getMapper(TestMapper.class);
			List<Map<String, Object>> progrmList = testMapper.getProgrmList();
			
			//Sqlsession을 사용하는 방법
			List<Map<String, Object>> progrmList = (List<Map<String,Object>>)sqlSession.selectList("getProgrmList");
			
			
			for (Iterator iterator = progrmList.iterator(); iterator.hasNext();) {
				Map<String, Object> map = (Map<String, Object>) iterator.next();
				System.out.println(map);				
			}
			
			Map<String, Object> param = new HashMap<String, Object>();
			param.put("id", "test8");
			param.put("name", "test8 name");
			param.put("age", 88);
			
			testMapper.insertTest(param);
			
			Map<String, Object> param2 = new HashMap<String, Object>();
			param2.put("id", "test5");
			param2.put("name", "test5 update name");
			param2.put("age", 28);
			testMapper.updateTest(param2);
			
			// 커밋
			sqlSession.commit();
		} catch (Exception e) {
			// 롤백
			sqlSession.rollback();
			e.printStackTrace();
		} finally {
			sqlSession.close();
		}
	}

 

 

 

 



« PREV : 1 : 2 : 3 : 4 : ··· : 7 : NEXT »