작성
·
539
1
13강 과정에 질문있습니다.
강의 마지막에 도서관리 애플리케이션에서
데이터 입력 하는 단계에서 에러가 나오고 있습니다.
화면에선 서버 내부 에러 라고 나오고,
로그창에서는
"INSERT INTO [*]USER(name, age) VALUES(?, ?)"; expected "identifier"; SQL statement:
INSERT INTO USER(name, age) VALUES(?, ?) [42001-214]] with root cause
org.h2.jdbc.JdbcSQLSyntaxErrorException: SQLステートメントに文法エラーがあります "INSERT INTO [*]USER(name, age) VALUES(?, ?)"; 期待されるステートメント "identifier"
: SQL Statement에 문법 에러가 있습니다.
"INSERT INTO [*]USER(name, age) VALUES(?, ?)"에 "identifier"가 요구됩니다.
Syntax error in SQL statement "INSERT INTO [*]USER(name, age) VALUES(?, ?)"; expected "identifier"; SQL statement:
INSERT INTO USER(name, age) VALUES(?, ?) [42001-214]
답변 1
0
안녕하세요!! 질문 올려주셔서 감사합니다~ 😊
현재 보내주신 로그를 확인해 보았을 때는 MySQL
이 설정되지 않고, H2
가 설정된 것 같습니다!! 😭
org.h2.jdbc.JdbcSQLSyntaxErrorException: SQLステートメントに文法エラーがあります "INSERT INTO [*]USER(name, age) VALUES(?, ?)"; 期待されるステートメント "identifier"
(라는 부분에서 "org.h2.xxx" 라고 나와 있어서 추측해보았습니다!)
따라서
MySQL이 잘 적용될 수 있도록 application.yml
을 한 번더 확인해주시거나
H2를 계속 사용하실 생각이라면, <38강. profile과 H2 DB>에서 설명드리는 설정을 적용해 위의 에러를 해결할 수 있을 것으로 예상됩니다.
에러의 원인은 H2에서 "user"라는 이름이 어떠한 명령어로 예약되어 있기 때문입니다! 따라서 user 테이블을 사용하면, H2는 예약된 명령어라고 에러를 발생시키게 되요. 이를 막기 위해서는 테이블의 이름을 변경할 수도 있고, 38강에서 적용하고 있는 NON_KEYWORDS=USER
옵션을 쓸 수도 있습니다.
꼭 해결되셨으면 좋겠습니다. 감사합니다! 🙏