728x90

👉 기본 환경

- 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

 

728x90

'DataBase > H2 with Error' 카테고리의 다른 글

[해결 방법] 90149-200: Database not found  (0) 2023.08.08
728x90

👉 기본 환경

- Language: Java11

- IDE: IntelliJ

- DB: H2 Database

 

 

⌨️ 상황

H2 Database에서 Generic H2 (Server)에서 jpashop DB로 연결 시도

 

 

🖨️오류

Database not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149

 

 

📡 원인

H2 Database 1.4.198 이후 버전은 보안 문제로 서버를 통한 데이터베이스가 연결 시, DB가 자동으로 생성되지 않으므로 Embeded를 통한 데이터베이스 자동 생성 기능을 사용해야 함

 

 

📰 해결 방법

1. Generic H2 (Embeded) 선택 후, JDBC URL에 'jdbc:h2:~/사용하려는_DB_이름' 입력 후 연결

2. C:\Users\user에서 생성된 jpashop.mv.db DB 파일 확인

3. Generic H2(Server) 선택 후, JDBC URL에 'jdbc:h2:tcp://localhost/~/사용하려는_DB_이름' 입력 후 연결

* 단, 사용하려는_DB_이름은 Embeded에 생성한 DB 이름과 동일해야 함

4. 접속 확인

 

 

 

📚 참고 자료

 

H2 Database 설치, 서버 실행, 접속 방법 (Windows, MacOS)

H2 Database 설치, 서버 실행, 접속 방법 (Windows, MacOS) H2 데이터베이스는 설치가 필요 없고 용량이 매우 가벼우며 웹용 콘솔(쿼리툴)을 제공하여 개발용 로컬 DB로 사용하기 좋은 데이터베이스이다. H

atoz-develop.tistory.com

 

728x90

'DataBase > H2 with Error' 카테고리의 다른 글

[해결 방법] 90107-200: Cannot drop table  (0) 2023.08.16