23.03.05 16:40 작성
·
3.5K
0
에러 코드 중 일부입니다.
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun Mar 05 16:31:35 KST 2023
There was an unexpected error (type=Internal Server Error, status=500).
nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: null ### The error may exist in file [build\resources\main\sqlmapper\v1\CoffeeMenu.xml] ### The error may involve com.boot.sailing.v1.dao.MenuDao.doList ### The error occurred while executing a query ### Cause: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: null
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: null ### The error may exist in file [build\resources\main\sqlmapper\v1\CoffeeMenu.xml] ### The error may involve com.boot.sailing.v1.dao.MenuDao.doList ### The error occurred while executing a query ### Cause: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: null
CoffeeMenu.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.boot.sailing.v1.dao.MenuDao">
<!-- 메뉴 조회 -->
<select id="doList" resultType="map">
SELECT no, coffee, kind, price,
DATE_FORMAT(reg_day,'%Y.%m.%d') AS reg_day,
DATE_FORMAT(mod_day,'%Y.%m.%d') AS mod_day
FROM coffee_menu;
</select>
</mapper>
package com.boot.sailing.v1.dao;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
@Mapper
public interface MenuDao {
List<Map<String, Object>> doList();
}
package com.boot.sailing.v1.service;
import com.boot.sailing.v1.dao.MenuDao;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@Log4j2
public class MenuSvc {
@Autowired
MenuDao menuDao;
public List<Map<String, Object>> doList(){
// Data 만들기 , List , Map
List<Map<String, Object>> list = menuDao.doList();
log.info(list);
return list;
}
public MenuSvc() {
log.info("============== MenuSvc , 생성자 =====================");
}
}
DB도 강사님이랑 똑같이 설정했는데 왜 에러가 발생하는지 모르겠습니다
답변 5
0
0
2023. 03. 13. 11:05
제가 해당 소스를 받아서 mysql 이 설치된 pc 에서 실행을 해보니
동일한 오류가 발생하는걸 확인하였습니다.
(mysql 이 설치되지 않는 pc 에서는 오류가 나지 않네요)
제가 해결한 방법은 version down 으로 해결했습니다.
아마도 스프링부트 버전과 자바버전등 환경의 문제로 2.7.7 이상 버전에서는
오류가 발생하는것 같아요.
아래 처리로 꼭 해결되었으면 좋겠습니다.
2024. 06. 03. 09:20
네.. 해당 부분은 아마도 부트의 버전과 자바의 버전이 안맞아서 그러지 않았나 생각이 드네요.
해당 강좌의 섹션19.작업준비(프로젝트생성 - 작업소스 포함) 에 부트 3.2.3, 자바17버전으로 프로젝트 컨버전 한 내용이 있습니다.
참고하시면 현재 버전으로도 작업 가능할것으로 보입니다.
0
2023. 03. 09. 23:28
아 그리고, 저는 오류는 안났지만 뭔가 화면이 나오는게 문제가 있는것 같아요
(이것때문인지는 모르겠지만, 저도 개발할때 아래의 값이 안맞으면 오류가 발생하던 기억이 있습니다.)
위 menu.html 파일에서 db 의 값을 map 을 이용해서 가져올때 key 값이 올바르지 않습니다.
위 값을 그대로 사용하기 때문에
커피No, 메뉴명의 key 값은 no, coffee 로 되어야 합니다.
우선 수정해보시고 다시한번 실행해 보시죠..
<th th:text="${prod.get('no')}">커피No</th>
<td th:text="${prod.get('coffee')}">메뉴명</td>
2023. 03. 10. 19:15
No -> no, name -> coffee로 변경해도 동일한 오류가 계속되며 마리아디비 재설치후 실행해도 동일한 에러가 발생합니다
2023. 03. 10. 20:03
네.. 이제는 왜 안되는지 제가 다 궁금하네요.
이럴경우에는 단위테스트를 해보는게 좋은데..
제가 해당 소스로 단위테스트 하는 영상을 하나 만들어서 공유할테니
한번 참고해 보세요.
9시 정도에 올려서 여기에 경로 공유할게요.
2023. 03. 10. 20:28
유투브영상 보시고 단위테스트로 한번 확인해 보세요.
그리고, 그래도 오류가 난다면 콘솔에 있는 오류로그 보내주시면 같이 고민해볼게요.
0
2023. 03. 09. 10:19
안녕하세요.
우선 소스는 제가 검증이 가능하기때문에 src > main 만 압축해서 메일 보내주시면
소스체크는 해보도록 하겠습니다.
소스에 문제가 없다면, 단순하게 jdbc 를 이용해서 커넥션만 체크해 보는것도 좋을것 같아요.
good.dhkim@gmail.com
0
2023. 03. 05. 17:43
안녕하세요
오류 내용에
Failed to initialize pool: null 이 있는것으로 보아 DB 커넥션 부분에 문제가 있을것으로 보입니다.
쿼리에 문제가 있을경우 보통 잘못된 쿼리를 에러에 같이 보여주기 때문에 위와 같이 생각할 수 있습니다.
우선 application.properties 의 DB 정보를 확인해보시고,
다음으로 Dao 를 체크하고 , 그 다음 sqlmapper 를 체크하야 하는데
혹시 모르니
CoffeeMenu.xml 파일의
SELECT no, coffee, kind, price, DATE_FORMAT(reg_day,'%Y.%m.%d') AS reg_day, DATE_FORMAT(mod_day,'%Y.%m.%d') AS mod_day
FROM coffee_menu; -> FROM coffee_menu 뒤에 세미콜론 삭제도 해보시기 바랍니다.
<mapper namespace="com.boot.sailing.v1.dao.MenuDao">
<!-- 메뉴 조회 -->
<select id="doList" resultType="map">
SELECT no, coffee, kind, price,
DATE_FORMAT(reg_day,'%Y.%m.%d') AS reg_day,
DATE_FORMAT(mod_day,'%Y.%m.%d') AS mod_day
FROM coffee_menu
</select>
계속해서 처리가 안된다면
강의 내용 중
섹션 7. DB 연결 Mybatis 를 사용하자
-> logback-spring.xml 설정
섹션 11. DB Transacion 기초 와 개념 이해 with Boot
-> Connection Pool - HikariCP를 만나보자
강의를 먼저 보시기 바랍니다.
DB 연결을 직접 확인하는 방법이 들어 있습니다.
꼭 해결되었으면 좋겠습니다.
그리고, 이런 과정을 통해서 어떤 상황에서 오류가 발생하는것을 알아가는것도
그냥 잘 되는것보다 많은 것을 알 수 있으니 힘내시기 바랍니다.
2023. 03. 05. 18:11
참고로
저는 DB 연결 시 3307 port 를 사용했는데
보통은 3306 port 를 사용합니다.
이부분도 한번 체크해 보시기 바랍니다.
# Configuration MariaDb
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3307/boot
spring.datasource.username=boot
spring.datasource.password=boot
2023. 03. 07. 15:13
위 문제가 해결되었나 모르겠네요.
해결이 안되었다면, 전체 소스를 압축해서 저에게 보내주시면 제가 확인해보겠습니다.
good.dhkim@gmail.com
2023. 03. 09. 02:11
소스는 강의자료에서 제공해주신 코드를 사용했습니다.
마리아디비 설치 후 HeidiSQL에서 세션 생성 후 쿼리문이 작동하는 것 까지 확인했습니다.
MariaDB가 잘 다운되었나 확인하기 위해 cmd 창에 mariadb -v 명령어를 입력하니
ERROR 1045 (28000): Access denied for user '유저아이디'@'localhost' (using password: NO)
이런 에러가 발생하며 접근이 거절되었습니다.
mariadb -uroot -proot 명령어를 입력하면 root 계정으로 mariadb에 접근이 가능합니다.
사용자는 root와 boot만 생성했습니다.
포트는 3307번을 이용했습니다.
접근이 거절된 유저는 제가 생성한 적이 없고, 왜 접근이 거절된지 모르겠습니다.
기존설치되어 있던 mysql은 3306포트를 사용중이며 혹시 몰라 takkill을 이용하여 3306포트를 이용하고 있는 mysql을 제거해봐도 오류가 동일합니다.
2024. 06. 02. 14:16
흑 버전 낮추니까 진짜로 되네요... 혹시 이게 어떤 원리일가요 ??
혹시 버전 낮추지않고 할수 있는 방법은 없을가요 ?