inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 부트 웹 개발 입문 - 따라하며 배우기

MyBatis 환경 설정 & 조회하기까지 (select)

DB 연동 부분에서 에러가 발생합니다.

3995

Deutan

작성한 질문수 1

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>

MenuDao.java

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();
}

MenuSvc.java

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도 강사님이랑 똑같이 설정했는데 왜 에러가 발생하는지 모르겠습니다

spring mvc spring-boot

답변 5

0

IT늦공 김부장

새소식에도 올렸으니 내용 참고해 보세요.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%ED%95%AD%ED%95%B4-%EB%94%B0%EB%9D%BC%EB%B0%B0%EC%9A%B0%EA%B8%B0/news

0

IT늦공 김부장

제가 해당 소스를 받아서 mysql 이 설치된 pc 에서 실행을 해보니
동일한 오류가 발생하는걸 확인하였습니다.
(mysql 이 설치되지 않는 pc 에서는 오류가 나지 않네요)

제가 해결한 방법은 version down 으로 해결했습니다.
아마도 스프링부트 버전과 자바버전등 환경의 문제로 2.7.7 이상 버전에서는
오류가 발생하는것 같아요.

아래 처리로 꼭 해결되었으면 좋겠습니다.

image

0

오도로

흑 버전 낮추니까 진짜로 되네요... 혹시 이게 어떤 원리일가요 ??

혹시 버전 낮추지않고 할수 있는 방법은 없을가요 ?

0

IT늦공 김부장

네.. 해당 부분은 아마도 부트의 버전과 자바의 버전이 안맞아서 그러지 않았나 생각이 드네요.

해당 강좌의 섹션19.작업준비(프로젝트생성 - 작업소스 포함) 에 부트 3.2.3, 자바17버전으로 프로젝트 컨버전 한 내용이 있습니다.

참고하시면 현재 버전으로도 작업 가능할것으로 보입니다.

0

IT늦공 김부장

아 그리고, 저는 오류는 안났지만 뭔가 화면이 나오는게 문제가 있는것 같아요
(이것때문인지는 모르겠지만, 저도 개발할때 아래의 값이 안맞으면 오류가 발생하던 기억이 있습니다.)

image

위 menu.html 파일에서 db 의 값을 map 을 이용해서 가져올때 key 값이 올바르지 않습니다.

image

위 값을 그대로 사용하기 때문에

커피No, 메뉴명의 key 값은 no, coffee 로 되어야 합니다.
우선 수정해보시고 다시한번 실행해 보시죠..

<th th:text="${prod.get('no')}">커피No</th>
<td th:text="${prod.get('coffee')}">메뉴명</td>

0

Deutan

No -> no, name -> coffee로 변경해도 동일한 오류가 계속되며 마리아디비 재설치후 실행해도 동일한 에러가 발생합니다

0

IT늦공 김부장

네.. 이제는 왜 안되는지 제가 다 궁금하네요.

이럴경우에는 단위테스트를 해보는게 좋은데..

제가 해당 소스로 단위테스트 하는 영상을 하나 만들어서 공유할테니
한번 참고해 보세요.

9시 정도에 올려서 여기에 경로 공유할게요.

0

IT늦공 김부장

유투브영상 보시고 단위테스트로 한번 확인해 보세요.

https://youtu.be/ugthz7YqsJg

 그리고, 그래도 오류가 난다면 콘솔에 있는 오류로그 보내주시면 같이 고민해볼게요.

0

IT늦공 김부장

안녕하세요.

우선 소스는 제가 검증이 가능하기때문에 src > main 만 압축해서 메일 보내주시면
소스체크는 해보도록 하겠습니다.

소스에 문제가 없다면, 단순하게 jdbc 를 이용해서 커넥션만 체크해 보는것도 좋을것 같아요.

good.dhkim@gmail.com

0

Deutan

main 파일 압축해서 good.dhkim@gmail.com로 보냈습니다.

지속적인 관심 가져주셔서 감사합니다.

0

IT늦공 김부장

해결될때까지 어떻게든 도와드리고자 합니다.

메일이 아직 오지 않았습니다.

메일 다시한번 확인 해주세요.

0

Deutan

메일 다시 보냈습니다!!

메일이 도착하지 않는다면 깃허브에 올린 소스코드 참조해주시면 감사하겠습니다!

https://github.com/kamja44/LearnSpringBoot

0

IT늦공 김부장

네.. github 에서 소스 받아서 그대로 실행해 보았는데, (소스 하나도 안건드리고 그대로 실행)

image위와같이 잘 나오는걸 확인했습니다.

imageDB 연결 오류없이 , select 부분도 잘 나오구요.

그렇다면 소스에 문제가 있는게 아닌 db 접속부분에 문제가 있는 것 같아요.

mariadb 를 삭제하고 다시한번 설치해보면 어떨까 생각도 해봅니다.

해결방안에 대해 저도 확인해 보겠습니다.

0

IT늦공 김부장

안녕하세요
오류 내용에
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 연결을 직접 확인하는 방법이 들어 있습니다.

꼭 해결되었으면 좋겠습니다.

그리고, 이런 과정을 통해서 어떤 상황에서 오류가 발생하는것을 알아가는것도
그냥 잘 되는것보다 많은 것을 알 수 있으니 힘내시기 바랍니다.

1

IT늦공 김부장

참고로
저는 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

 

1

IT늦공 김부장

위 문제가 해결되었나 모르겠네요.

해결이 안되었다면, 전체 소스를 압축해서 저에게 보내주시면 제가 확인해보겠습니다.

good.dhkim@gmail.com

0

Deutan

소스는 강의자료에서 제공해주신 코드를 사용했습니다.

마리아디비 설치 후 HeidiSQL에서 세션 생성 후 쿼리문이 작동하는 것 까지 확인했습니다.

imageimage

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을 제거해봐도 오류가 동일합니다.

마이바티스 환경설정 조회하기 강의 부분에서 메뉴부분에러

0

59

2

자바 8버전이 선택지에 없는데 어떻게 하죠

0

71

2

zip파일 다운받아서 풀었는데도 계속 오류가 생기네요

0

182

2

가격 수정만 자꾸 에러페이지로 갑니다...ㅜ

0

267

2

오류가 이렇게 뜨는데

0

498

1

타임리프 > jsp

0

97

1

File imprt 어떤거 해야하죠?

0

129

1

검색기능이 안됩니다

0

142

2

검색기능이 안됩니다

0

173

3

500에러

0

168

2

v2 객체 만드는중 입니다

0

126

2

오류가 자꾸 나는데 왜이러는 걸까요?ㅠㅠ

0

239

5

오류가 왜 나는건지 모르겠어요

0

150

2

스프링 부트 버전

0

169

2

log.info가 적용이 안되는 문제

0

172

1

Spring Boot에서 jsp 연동 오류

0

317

1

7장 insert mapper erro 문의합니다

1

246

2

선생님 혹시 파일업로드도 알려주실수있나여?

2

594

1

선생님 혹시 세션하고 쿠키 부분 언제쯤 올려주실수있나여?

1

195

1

스프링 부트 2.x 버전 지원 중단, myBatis 추가가 안돼요

0

880

1

커뮤니티 버전에서 스프링 부트를 선택할수 없습니다.

1

347

1

안녕하세요 Ajax강의 잘듣고있습니다. 다름이 아니라 Ajax로 검색할떄 시작일이나 종료일 고객명과 같은 검색조건을 어떻게 구현해야하는지 고민을해보다 질문드립니다.

1

349

2

DB 생성시 발생 에러 관련! "Can't create table" "Error No 150. "Foreign key constraint is incorrectly formed")

1

527

0

int i = menuService.doInsert(coffee,kind,price); 이 코드 질문있어요

1

376

1