728x90
하고자 하는 동작은 테이블이 있다면 해당 테이블의 모든 데이터를 삭제하는 것이다.
아래와 같이 코틀린으로 테스트 코드를 작성했다.
private fun resetDatabase() {
val tables = jdbcTemplate.queryForList("SHOW TABLES", String::class.java)
tables.forEach { table ->
jdbcTemplate.execute("TRUNCATE TABLE $table")
}
}
아래와 같은 오류가 발생했다.
구글링을 해보니 테이블 간 연관관계가 맺어져 있어서 오류가 나는 것이였다. 내 프로젝트에서 연관관계는 다음과 같이 작성되어 있다.
- Member 와 Note : 일대다
- Member 와 Quiz : 일대다
- Note 와 NotePage : 일대다
- Quiz 와 QuizPage : 일대다
각 테이블의 Foreign Key 제약조건을 비활성화 테이블 내의 데이터 삭제 후 다시 테이블의 Foreign Key 제약조건을 활성화 해주면 된다.
jdbcTemplate.execute("SET FOREIGN_KEY_CHECKS = 0") // FK Constraint 비활성화
jdbcTemplate.execute("SET FOREIGN_KEY_CHECKS = 0") // FK Constraint 활성화
최종 코드는 다음과 같다.
private fun resetDatabase() {
jdbcTemplate.execute("SET FOREIGN_KEY_CHECKS = 0")
val tables = jdbcTemplate.queryForList("SHOW TABLES", String::class.java)
tables.forEach { table ->
jdbcTemplate.execute("TRUNCATE TABLE $table")
}
jdbcTemplate.execute("SET FOREIGN_KEY_CHECKS = 1")
}
728x90
'TIL' 카테고리의 다른 글
[hELLO 스킨 css 편집] 이미지가 본문 영역을 벗어날 때 (0) | 2024.05.28 |
---|---|
[Kotlin + SpringBoot] JaCoCo 추가하기 (0) | 2024.05.21 |
[Ubuntu] git에서 SpringBoot 프로젝트 받아오고 jar 파일 빌드 후 Script 로 jar 파일 배포하기 (0) | 2024.02.11 |
[JPA] @CreatedDate와 @LastModifiedDate (0) | 2024.01.13 |
[SpringBoot] 에러 응답 형식 통일 (0) | 2024.01.02 |