[글을 쓰는 의도]

 야놀자 패캠 부트캠프에서 팀 단위로 하는 토이 프로젝트 마다 벨트를 꽉 매고 버스를 타고있다. 다음 프로젝트를 위해  개인 프로젝트를 만들어서 Spring JPA를 복습하려고 한다. 간단하게 프로젝트를 만들고 MySQL과 JPA를 연동하는 과정에서 애를 먹어서 나중엔 고생을 덜 하려고 글로 남기려고 한다.

 

[막힌 부분]

 먼저 Spring Init에서 간단한 의존성을 추가하고 프로젝트를 만들었다. 그리고 MySQL을 Docker-compose를 사용해서 DB를 만들었고 이 과정에서 지난 팀 프로젝트에서 썼던 외부 .env 파일을 사용해 docker.yml, .env , application.yaml을 설정했다.

 

//application.yaml

spring:
    config:
      import: optional:file:.env[.properties]

    datasource:
      url: jdbc:mysql://localhost:${LOCAL_MYSQL_PORT}/fc_sns?useSSL=false&useUnicode=true&allowPublicKeyRetrieval=true
      driver-class-name: com.mysql.cj.jdbc.Driver
      username: ${LOCAL_MYSQL_USERNAME}
      password: ${LOCAL_MYSQL_PASSWORD}

    jpa:
      properties:
        format_sql: true
        dialect: org.hibernate.dialect.MySQL8Dialect
      hibernate:
        ddl-auto: create

 

# docker-compose.yaml

version: '3'

services:
  mysql:
    container_name: toy2-mysql
    image: mysql:8.0
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_USERNAME: ${LOCAL_MYSQL_USERNAME}
      MYSQL_ROOT_PASSWORD: ${LOCAL_MYSQL_PASSWORD}
      MYSQL_DATABASE: fc_sns
      TZ: Asia/Seoul
    volumes:
      - ${LOCAL_MYSQL_VOLUME_PATH}:/var/lib/mysql
    ports:
      - ${LOCAL_MYSQL_PORT}:3306

 

#.env

LOCAL_MYSQL_USERNAME =root
LOCAL_MYSQL_PASSWORD =1234
LOCAL_MYSQL_VOLUME_PATH =C:\toytoy
LOCAL_MYSQL_PORT =3306

 

 

위와 같이 설정 파일을 지난 프로젝트에서 사용했던 그대로 들고와서 설정했는데 이리저리 다 만져봐도 DB에 접속하는 URL 관련 에러가 나오곤 했다.

 

[해결]

 .env 파일을 사용하는 과정에서 LOCAL_MYSQL_USERNAME = root 에서 '=' 기호 앞에 띄어쓰기(' ')를 사용해서 JPA가 인식을 하지 못했던 이유였다.