Error executing DDL "INSERT INTO TB_BOARD (candidates are: "tb_board")

Jung In Lee·2024년 3월 29일
0

(1) Error executing DDL "INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT)" via JDBC [Table "TB_BOARD" not found (candidates are: "tb_board");]

tb_board라는 테이블은 있는데 TB_BOARD라는 테이블을 찾지 못했다는 오류.

즉, 대소문자 오류이다.

기본적으로 spring boot에서의 physical naming 전략과
hibernate의 physical naming 전략이 달라서 생긴 오류라고한다.

@Table(name = "TB_BOARD") 로 정했음에도 소문자로 들어가서 application.yml에 설정을 추가해주었다.

spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

(2) GenerationTarget encountered exception accepting command : Error executing DDL "INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT)" via JDBC [Syntax error in SQL statement "INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT)[*]"; expected "OVERRIDING USER VALUE, OVERRIDING SYSTEM VALUE, DIRECT, SORTED, DEFAULT VALUES, VALUES, SET, WITH, (, SELECT, TABLE, VALUES";]

그 다음에러는 value 이전 이하문장에서 담기는 오류인데... chatgpt는 이런 결과를 출력했다.

"[*]" 부분이 문제를 일으키고 있습니다. 해당 부분에서 "OVERRIDING USER VALUE, OVERRIDING SYSTEM VALUE, DIRECT, SORTED, DEFAULT VALUES, VALUES, SET, WITH, (, SELECT, TABLE, VALUES" 등의 키워드나 구문이 예상되었으나 발견되지 않았습니다.
즉, SQL 문장의 문법이 잘못되었거나 필요한 키워드나 구문이 누락되었음을 나타냅니다.

하지만 여길보면 아무런 문제도 보이지않는데...

  • import.sql
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT)
VALUES (1, '게시글 제목1', '게시글 내용1', '작성자1', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT)
VALUES (2, '게시글 제목2', '게시글 내용2', '작성자2', NOW());

사실, sql문은 공백하나로도 오류가 발생한다. 바로 values앞의 개행문자가 원인. 첫번째 문장을 개행문자를 지우고 돌렸더니 잘돌아간다. 흠...

INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (1, '게시글 제목1', '게시글 내용1', '작성자1', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (2, '게시글 제목2', '게시글 내용2', '작성자2', NOW());

전부 바꿔주었다.

정상작동.

PS. 인텔리제이 다중커서는 Alt + SHIFT 를 누르고 왼쪽마우스를 클릭하면된다.

profile
Spring Backend Developer

0개의 댓글