본문 바로가기

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException 에러

에러 상태

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException

 

 

만약 사용하시는 DB가 Mysql 8.0 버전이고 public key retrieval is not allowed에러가 발생한다면 다음과 같은 옵션을 확인해보셔야합니다.

  • useSSL: DB에 SSL로 연결하는지 안하는지 확인합니다.
  • allowPublicKeyRetrieval: 서버에서 RSA 공개키를 검색하거나 가져와야하는지 확인합니다.

 

 

에러 발생 원인

에러가 발생하는 원인은 useSSL=false로 설정하고 allowPublicKeyRetrieval 설정을 하지 않은 경우입니다.

따라서 다음과 같이 설정해주시면 해결하실 수 있습니다.

 

 

접속 URL 설정

root-context파일을

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- Root Context: defines shared resources visible to all other web components -->

	<!-- for mysql -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost:3306/yse_spring_mvc?serverTimezone=UTC&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;" />
		<property name="username" value="yse_spring_mvc_user" />
		<property name="password" value="1234" />
	</bean>

	<bean id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="mapperLocations"
			value="classpath:/sqlmap/**/*_SQL.xml" />
	</bean>
	<bean id="sqlSessionTemplate"
		class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
	</bean>
</beans>

property name="url"부분에 

 

useSSl=false를 하고

allowPublicKeyRetrieval=true를 해주었습니다.

 

 

728x90