상똥이의 Back-End 공부방

intelliJ 와 JPA 연동이 도저히 안될 때 해결 방법 본문

오류해결

intelliJ 와 JPA 연동이 도저히 안될 때 해결 방법

상똥백 2023. 10. 8. 14:32

1. sql파일 이름을 바꿔보기 (data  → import)

2. properties 또는 yaml(=yml) 확인하기 (데이터 경로/ 사용자/ 비밀번호/ jpa 설정)

3. 데이터베이스 설정을 올바르게 했는지 확인하기 (데이터베이스 properties, 사용자 권한)

4. intelliJ ultimate버전(유료)이 맞는지 확인하기 (jpa buddy는 무료버전에서 일부 기능만 제공)

 

1. sql파일 이름을 바꿔보기

sql 파일의 이름을 혹시 data로 쓰고 계신다면 import로 바꿔봅시다

전 일주일동안 원인을 찾다가 바로 됐습니다.............

(*참고로 data.sql로 사용할때에는 파일이 비어있을 때 오류가 나고 테스트가 실행되지 않습니다 근데 import로 사용하면 파일이 비어있어도 테스트가 잘 실행됩니다)

저는 현재  spring boot 2.7.0을 사용중입니다

board라는 mysql데이터베이스를 생성해두고 data.sql파일을 사용해 데이터를 테이블에 삽입한 후 잘 연동되는지 H2, JPA, Auotowired를 사용해 테스트중이었습니다.

보통  테스트를 실행시키면 hibernate에서 내가 만들어둔 데이터를 하나하나 삽입시켜줘야 정상인데 (아래 사진처럼)

똑같은 코드에 sql파일 이름을 data로 하면 아래와 같이 오류가 뜹니다!!!!!!!!!!

이때 코드는 전혀 건드리지 않고 sql파일 이름만 import로 바꿔준다면 실행이 됩니다

참고로 이름을 import가 아닌 다른 이름으로 하면(testdb, sangddong 등) 안 됩니다!

와이??

그렇다고 합니다 잘 참고해보세용

 

2. yaml 확인하기

- 사용자와 비밀번호, 사용하려는 데이터베이스 이름(board라고 칭하겠습니다)을 적절히 기재했는지 / jpa 설정을 적절히 했는지 확인합시다

spring:
  datasource:
    url: "jdbc:mysql://localhost:3306/사용하려는_데이터베이스_이름"
    username: "사용자 이름"
    password: "비밀번호"
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    defer-datasource-initialization: true
    hibernate.ddl-auto: create
    show-sql: true
    properties:
      hibernate.format_sql: true
      hibernate.default_batch_fetch_size: 100
  h2.console.enabled: true
  sql.init.mode: always

 

3. 데이터베이스 설정을 올바르게 했는지 확인하기

(1) 데이터베이스 설정을 잘 했는지 확인해봅시다

-노란색 표시를 눌러서 properties를 켜줍니다

- 사용하려는 데이터베이스 이름을 적절히 기재해줍니다

- User는 root로, password는 MySQL을 다운받을 때 정했던 비밀번호를 기재해줍니다

- 아래에 test connection을 눌러 연결되는지 확인합니다

 

(2) yml에 기재한 사용자에게 모든 권한을  부여했는지 확인해봅시다

- 노란색을 눌러 데이터베이스 콘솔창을 켜줍니다

- 콘솔창에 아래를 입력해 권한을 확인해봅시다

show grants for '아이디'@'localhost';

- 위와 같이 뜨면 아래와 같이 콘솔창에 입력해줍니다

grant all privileges on 테이블명.컬럼명 to '아이디'@'localhost';
flush privileges;

- 그럼 오류창에 denied가 안 뜰 것

 

 

여기까지 하셔도 안 된다면,,,

저도 모르겠습니다,,,,,,,,,,,,,