Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
[Spring] MariaDB 테이블 생성 오류 (ERROR: 1146-42S02, 1063-42000)
EVEerNew 2022. 11. 5. 18:45
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 공부를 먼저하지 않고 코딩을 하니 이런 대참사가..)
'개발 > Spring DataBase' 카테고리의 다른 글
MariaDB & MySQL 충돌 오류 [ 'Access denied for user 'root'@'localhost' (using password: YES)' ] (0) | 2023.03.18 |
---|---|
[Spring] JPA @JoinColumn 의 이해(외래키 최적화) (1) | 2022.12.01 |
[Spring] DAO, DTO, Entity, 기본 계층 설계 (0) | 2022.08.28 |
[Spring Boot] MongoDB GridFS로 이미지 저장, 불러오기 (0) | 2022.08.21 |
[Spring Boot] MongoDB에서 참조 관계 설정하기 (0) | 2022.08.16 |