오류 org.hibernate.service.spi.ServiceException: Unable to create requested service

Rosie·2024년 1월 23일
0
post-thumbnail

Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to resolve name [org.hibernate.dialect.MySQL8InnoDBDialect] as strategy [org.hibernate.dialect.Dialect]

게시판 만들다가 시작부터 오류 발생...!
org.hibernate.dialect.MySQL8InnoDBDialect 이거를 해결할 수 없다?는 뜻??

//application.yml

# 서버 포트 설정
server:
  port: 8082

# database 연동 설정
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/board?serverTimezone=UTC&characterEncoding=UTF-8
    username: root
    password: 0000
  thymeleaf:
    cache: false

  # spring data jpa 설정
  jpa:
    database-platform: org.hibernate.dialect.MySQL8InnoDBDialect
    open-in-view: false
    show-sql: true
    hibernate:
      ddl-auto: update

mysql과 연동하는 과정에서 난 오류같은데 어디가 잘못된지 모르겠다..
검색해보니 password: '0000'으로 해결하신 분도 있어서 해봤는데 해결이 안됐다.

하루정도 고민하다가 발견한 틀린부분은 두가지.

위 yml 파일에서 우선 url부분에서 내가 만든 db인 board는 localhost가 아니라 127.0.0.1 이라서 url이 jdbc:mysql://127.0.0.1:3306/board? ~~~식으로 되어야한다.

jpa 부분에 org.hibernate.dialect.MySQL8InnoDBDialect 이게 아니라 org.hibernate.dialect.MySQL8Dialect 이거다.. 오류 메시지를 보면 알 수 있다.

Mysql db부터 다시 만들어서 해봤다.

//cmd 창에서 mysql로 들어가기
mysql -u root -p

//비번입력후 
use mysql;

//db 생성
create database [db이름];

//계정 생성
// localhost 를 적으면 로컬에서 접속 가능한 사용자가 추가됨
create user '[계정ID]'@'localhost'identified by '[비번]';

//권한주기
grant all privileges on [db이름].* to '[계정ID]'@'localhost';
//아래는 mysql 8.x에서 적용된다는데 필자는 생성이 안됨..
grant all privileges on [db이름].* to '[계정ID]'@'%' with grant option;

//권한적용
flush privileges;

//권한확인
show grant for [계정ID];

아래와 같이 db생성되는 것을 확인하였는데 또다른 오류가 발생.이건 다음 포스팅에...

참고용 mysql 버전

참고용 build.gradle

//build.gradle
plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.2'
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'springboot'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	// database
	runtimeOnly 'com.mysql:mysql-connector-j'
}

tasks.named('test') {
	useJUnitPlatform()
}

0개의 댓글