-
spring boot📕 [Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', ] Spring boot mybatis 데이터 insert 시 따옴표 안 들어가는 이슈2023. 9. 5. 21:35728x90
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', 'C:\bookbag\upload-file\230905e3ae6623bec24e7abbde8049fddb3040.png' at line 2
Spring boot
로 게시판을 만드는 도중 새로운 테이블을 생성하고 데이터 insert 테스트를 하는데SQL syntax
에러가 발생했다.보통 SQL Systax 에러는 지정해주는 위치 인근에 SQL 문법을 확인하면 이유가 나오기 때문에 간단히 해결될줄 알았으나 insert 하는 데이터에 홑따옴표가 다 사라져 있었다.
<!-- 이미지 저장 --> <insert id="saveAll" parameterType="list"> INSERT INTO book_img ( file_name, origin_name, file_path, book_id, status, create_date, delete_date ) VALUES <foreach item="file" collection="list" separator=","> ( ${file.file_name}, ${file.origin_name}, ${file.file_path}, ${file.book_id}, 'Y', NOW(), NULL ) </foreach> </insert>
이것 저것 검색한 결과 mapper.xml에
#
로 써야할 것을$
로 작성해서 그런거였다.<!-- 이미지 저장 --> <insert id="saveAll" parameterType="list"> INSERT INTO Book_img ( file_name, origin_name, file_path, book_id, status, create_date, delete_date ) VALUES <foreach item="file" collection="list" separator=","> ( #{file.file_name}, #{file.origin_name}, #{file.file_path}, #{file.book_id}, 'Y', NOW(), NULL ) </foreach> </insert>
#
로 변경하니 정상적으로 데이터베이스에 INSERT 됐다.에러도 잡았겠다 이 두개의 차이점이 뭔지 확인하고자 자료를 찾아봤다.
${}
- 파라미터가 그대로 출력된다.
- 홑따옴표('')가 필요한 경우 부적합하다.
- SQL Injection(쿼리 주입 공격)에 취약하다.
- 동적으로 컬럼명을 변경하는 경우 사용된다.
#{}
- 파라미터에 자동으로 홑따옴표('')가 붙는다.
- 쿼리문 실행시 파라미터가 '?'로 바인딩 되어 수행된다.
728x90'spring boot' 카테고리의 다른 글
[Spring Boot] ajax 요청시 404 뜰 때 (0) 2023.10.21 [Spring Boot] Maven 환경 Oracle 연동하기 (0) 2023.10.14 📙 [Error] Error resolving template [like/65/find], template might not exist or might not be accessible by any of the configured Template Resolvers ... (0) 2023.09.19 📙 [Error] No setter found for the keyProperty 'id' in ... (0) 2023.09.18 📕 IntelliJ Thymeleaf 이미지 서버 재시작 없이 반영 (0) 2023.09.11