프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

MariaDB로 새로 JPA를 공부하다 미칠뻔한 오류를 만나 정리해본다.

 

 

....
spring.jpa.hibernate.ddl-auto=create-drop

Maria DB에서는 application.properties 에 이와 같은 설정을 해두면 Entity 저장시 자동으로 SQL 구문이 생성되어 Table이 새로 만들어진다.

 

그래서 본인은 일단 두개의 엔티티가 서로를 참조하게 만들었는데, 하나는 테이블이 잘 생성이 되지만

하나는 죽어도 오류가 나면서

spring error: 1146-42s02: table doesn't exist

오류가 발생했다.

 

 

이리저리 구글링을 해보며 해결법을 적용을 해보아도 해결이 되지 않았는데

전체 오류를 천천히 읽어보니 Table 생성 sql 구문 다음에 이와 같은 오류를 발견했다.

Error: 1063-42000: Incorrect column specifier

 

 

이 오류에 대해서 찾아보니 문제는 바로 이 코드였다.

 

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String orderid;

MariaDB에서는 기본 키 설정을 IDENTITY로 하면 키 생성이 DB에게 위임된다. 이때 MariaDB는 auto_increment  옵션이 적용되어 자동으로 값을 증가하면서 키를 부여한다.

하지만 MariaDB는 int와 float 타입에만 auto_increment을 적용할 수 있다.

즉, 보인은 키를 String  타입으로 선언하였으므로 Table 생성 SQL이 거부되었다...

 

따라서 키 생성을 DB에 위임하려면 String 타입을 사용할 수 없다.

 

이외로는 sql error: 1064, sqlstate: 42000 오류도 만났는데

이는 예약어를 table 스키마에 사용하는 경우 발생하는 오류로, 이 또한 table 생성이 거부된다.

 

(해당 DB 공부를 먼저하지 않고 코딩을 하니 이런 대참사가..)

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함