[글을 쓰는 의도]
야놀자 패캠 부트캠프에서 팀 단위로 하는 토이 프로젝트 마다 벨트를 꽉 매고 버스를 타고있다. 다음 프로젝트를 위해 개인 프로젝트를 만들어서 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가 인식을 하지 못했던 이유였다.