Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 쿼리에러
- ERD 수정
- logout http 메소드
- 터미널 실행
- Intellij terminal jar
- restful api 명세서
- Gradle - Kotlin
- 테이블구성
- restful api 작성 방법
- auto ddl
- 데이터베이스
- 파이썬
- sendError()
- 할일관리
- springboot mysql
- jpa 연관관계
- 연관관계
- initializr
- jpa
- Gradle - Groovy
- 테이블항목
- intellij 속도 향상
- restful 카멜케이스
- springboot
- 어노테이션
- restful login 메소드
- SpringBoot개인프로젝트
- create 모드
- 알고리즘
- 아규먼트 리졸버
Archives
- Today
- Total
리나 Dev토리
1차 회원가입까지의 트러블 슈팅 본문
트러블 슈팅이란?
문제를 정의하고, 원인을 추론하고, 조치 방안을 검토하고, 해결하는 과정이다.
처음에 thymeleaf로 index화면을 만들고 열어보면서
1-1. 에러코드
- Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration
1-2. 원인
- JPA 라이브러리를 받아놓고, DB 설정을 하지 않음
1-3. 해결
1) build.gradle에 MySQL 연결을 위한 runtimeOnly 'mysql:mysql-connector-java' 라이브러리를 추가
2) MySQL에서 사용자 추가
- 별도의 사용자를 추가해주었다.
create user '유저네임'@'%' identified by '비밀번호'; - 데이터베이스 사용권한 부여
grant all privileges on DB명.* to 유저네임@'%'; - 권한 적용
(변경 내용을 메모리에 반영)
flush privileges;
3) application.properties 파일에 datasource 정보 입력
- spring.datasource.url, username, password
- gitignore에 .properties 추가
spring.datasource.url=jdbc:mysql://localhost:3306/DB명
spring.datasource.username=사용자명
spring.datasource.password=암호
2-1. 에러코드
- TemplateProcessingException - th:field="*{loginId}"
타임리프에서, 변수에 바인딩할 수 없음
2-2. 원인
- 컨트롤러에서 @ModelAttribute 주석해놓고 실행해볼려고 시도해서
2-3. 해결
1) @ModelAttribute로 변수를 하나씩 받지 않고, 객체로 한번에 받을 수 있도록 함
2) 회원가입 폼을 위한 객체 생성
- 회원가입 폼에서 입력에러로 폼 화면이 다시 표시될 때,
입력했던 ID, 이메일 정보를 유지시켜주기 위해
3-1. 에러코드
- Error creating bean with name 'userRepository' defined in com.todaymaker.repository.UserRepository
... IllegalArgumentException: Not a managed type: class com.todaymaker.domain.User
3-2. 원인
- JPA에서 사용할 클래스에 @Entity를 추가하지 않아서
- @Entity : 테이블과 매핑할 클래스
3-3. 해결
- User 클래스에 @Entity 추가
- PK인 ID 필드에 @Id, @GeneratedValue 추가
참고: https://conanglog.tistory.com/123
4-1. 에러코드
- Field 'id' doesn't have a default value
4-2. 원인
- MySQL에서 사용자 id 컬럼에 AI (자동증가) 설정이 안되어 있었음
4-3. 해결
- MySQL Workbench에서
Todo 테이블과의 식별관계인 FK설정으로 AI 설정이 불가하여, FK 해제 후, 사용자 테이블의 id에 AI 체크
5-1. 에러
- 쿼리 문법 에러
- MySQL Workbench에서 쿼리 테스트
properties파일에서 spring.jpa.show-sql=true 로 설정
-> 출력된 쿼리를 실행하니 Workbench에서도 Syntax 에러라고 뜸
- MySQL Workbench에서 쿼리 테스트
5-2. 원인
- 탈퇴여부 컬럼명 'out'이 MySQL에서 예약어로 사용불가한 단어
5-3. 해결
- 컬럼명을 'isDeleted'로 변경
참고: http://www.mysqlkorea.com/sub.html?mcode=develop&scode=01&m_no=21584&cat1=9&cat2=294&cat3=0&lang=k
6-1. 현상
- DB에 클래스 카멜스타일 필드명이 -> 언더바로 변경된 컬럼이 생성되어 저장되었다.

6-2. 원인
- JPA에 기본 설정은 필드명이 카멜타입인 경우 언더바로 변경해줌
6-3. 해결
1) application.properties 파일에 언더바 방지 설정
- spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
- spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
참고: https://pinkcolor.tistory.com/34
2) 기존에 생성된 컬럼을 삭제 후 정상적으로 저장됨
What I learn
- 기본의 중요성에 대해서 상기하게 되었다.
개념을 더 확실하게 이해할 수 되었다. - 인프런 실무 로드맵 강의도 보고, DB2 강의도 결제해서 봐야겠다.
'SpringBoot 개인플젝(TodayMaker)' 카테고리의 다른 글
Restful API 설계하기 (1) | 2022.12.21 |
---|---|
DDL create모드로 DB 스키마 적용 (0) | 2022.12.20 |
TIL. Local에 MySQL DB 구축, utf8mb4 (0) | 2022.11.16 |
TIL. ERD 초안 작성 (0) | 2022.11.14 |
[TodayMaker] 개인 프로젝트 생성 (0) | 2022.11.13 |