👉 기본 환경
- Language: Java11
- IDE: IntelliJ
- DB: H2 Database
⌨️ 코드
1
2
|
DROP TABLE TMP;
|
🖨️오류
1
2
3
|
Cannot drop "TMP" because "FK3DWS8W2I55AMMNYJP9C99Q144" depends on it;
SQL statement: drop table tmp [90107-200]
|
📡 원인
외래키 제약 조건(FK3DWS8W2I55AMMNYJP9C99Q144)으로 인해 TMP 테이블을 삭제할 수 없음
TmpItem Entity
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
31
|
import javax.persistence.*;
@Entity
public class TmpItem {
@Id
@GeneratedValue
@Column(name = "TMP_ITEM_ID")
private Long id;
@ManyToOne
@JoinColumn(name = "TMP_ID")
private Tmp tmp;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Tmp getTmp() {
return tmp;
}
public void setTmp(Tmp tmp) {
this.tmp = tmp;
}
}
|
▶ Table 생성 결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Hibernate:
create table TmpItem (
TMP_ITEM_ID bigint not null,
TMP_ID bigint,
primary key (TMP_ITEM_ID)
)
Hibernate:
alter table TmpItem
add constraint FK3dws8w2i55ammnyjp9c99q144
foreign key (TMP_ID)
references Tmp
|
TmpItem 테이블이 @JoinColumn에 의해 TMP_ID를 FK로 하여 Tmp 테이블에 외래키 제약 조건을 설정
📰 해결 방법
1
2
3
|
DROP FOREIGN KEY FK3dws8w2i55ammnyjp9c99q144;
DROP TABLE TMP;
|
1. 제약 조건 삭제 후, DROP TABLE
1
2
3
|
DROP TABLE TMPITEM;
DROP TABLE TMP;
|
2. FK를 갖고 있는 테이블(TMPITEM) 먼저 DROP 후, 필요한 테이블(TMP) DROP
'DataBase > H2 with Error' 카테고리의 다른 글
[해결 방법] 90149-200: Database not found (0) | 2023.08.08 |
---|