작성
·
503
·
수정됨
답변 1
0
안녕하세요! homekgu님~!! 질문 올려주셔서 감사드립니다! 🙏 서버 내부 오류가 나서 많이 답답하셨겠어요!!! 😭
보내주신 에러를 기반으로 몇 가지 알 수 있는 점을 말씀드려볼게요!!!
[알 수 있는 점]
org.h2.jdbc.JdbcSQLSyntaxErrorException
현재 에러는 H2와 관련된 에러입니다! H2는 MySQL과 다른 경량 Database로 <38강>에서 다루고 있습니다!
바꾸어 말하면 현재 MySQL에 SQL 쿼리가 나가고 있지 않고, H2에 SQL 쿼리가 나가고 있습니다!
Spring에서는 데이터베이스가 설정되지 않으면 H2를 기본으로 설정하게 됩니다!
때문에 MySQL 설정이 제대로 되지 않은 것이라 인지할 수 있습니다!
Syntax error in SQL statement "..."; expected 'identifier'
그렇다면 H2에서는 왜 에러가 나왔는가!
그 이유는 user
라는 테이블 이름 때문입니다!
user
는 H2에서 identifier (식별자)로 Java 변수 이름이 if나 while을 쓸 수 없는 것처럼 그 자체로 의미를 갖는 문구 입니다.
정확히는 H2 버전에 따라 다른데, Spring Boot 2.7.x
버전에서 사용하는 H2 부터는 user를 identifier로 인지합니다.
[해결책]
현재 MySQL과 연결되어 있지 않고 H2 DB와 연결되어 있는 것은 자명하므로, MySQL 설정이 제대로 된 것인지 확인해야 합니다!
resources
폴더 안에 application.yml
이 잘 들어 있는지 확인해주세요!
application.yml
파일 안에 DB 관련 설정이 정상적으로 들어가 있는지 확인해주세요!
spring:
datasource:
url: "jdbc:mysql://localhost/library"
username: "root"
password: ""
driver-class-name: com.mysql.cj.jdbc.Driver
혹시나 위의 두 설정을 모두 잘 했는데도 MySQL 연결이 되고 있지 않다면, 현재 IntelliJ에서 실행되는 스프링이 resources
폴더를 리소스 폴더로 인지하지 못하고 있을 수 있습니다!
이 경우는, resources
폴더 우클릭
> Mark Directory as
> Resources Root
해주셔서 해당 폴더를 리소스 폴더로 인지할 수 있게 적용해주면 됩니다!!
어제 늦게까지 원인을 찾으시느라 고생 많으셨습니다 ㅠㅠㅠㅠ 꼭 해결되셨으면 좋겠습니다! 🙏
위의 내용들을 적용해보시고 잘 안되시면 또 편하게 질문 올려주세요~! 😊
감사합니다!! 🙇
적용했는데도 서버가 오류가 뜨네요..ㅠㅠ
이 문장이 오류 원인인거 같은데.. 방법이 있을까요..?ㅜㅜ