반응형
도무지 이해할 수 없는 에러를 만났다.
파라미터로 넘어온 문자열 뒤에 왜 작은 따옴표가 추가되었는지 알 수 없었다.
게다가 SyntaxError라고만 알려주고 있다.
쿼리에 오타가 있는가 해서 봤지만 없었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="tk.monsh.springbootpractice.mapper.OrderMapper">
<select id="getOrder" parameterType="String" resultType="Order">
SELECT order_id as orderId,
user_id as userId,
order_date as orderDate,
is_purchased as isPurchased
FROM order
WHERE 1=1
AND user_id = #{username}
</select>
</mapper>
|
cs |
XML mapper는 위와 같다. 오타가 없다.
검색하다가 예약어 때문에 문제가 발생했다는 포스팅을 보게 되었는데,
같은 증상은 아니었지만 혹시 하는 마음에 검색해 보았다.
MySQL 예약어(출처 : 제타위키)
https://zetawiki.com/wiki/MySQL_%EC%98%88%EC%95%BD%EC%96%B4
MySQL 예약어 - 제타위키
다음 문자열 포함...
zetawiki.com
ORDER BY 때문에 ORDER 키워드가 예약어로 지정이 되어 있는 것 같다.
그래서, 쿼리를 다음과 같이 바꾸었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="tk.monsh.springbootpractice.mapper.OrderMapper">
<select id="getOrder" parameterType="String" resultType="Order">
SELECT order_id as orderId,
user_id as userId,
order_date as orderDate,
is_purchased as isPurchased
FROM `order`
WHERE 1=1
AND user_id = #{username}
</select>
</mapper>
|
cs |
테이블명 order 앞뒤로 `를 붙였다.
문제 해결.
반응형
'개발 > MySQL' 카테고리의 다른 글
[MySQL] Can't find FULLTEXT index matching the column list 해결 방법 (0) | 2021.07.24 |
---|---|
[MySQL] MySQL/MariaDB Database 데이터베이스 생성, 조회, 선택, 삭제 (0) | 2021.05.04 |
[MySQL] MySQL/MariaDB 콘솔/CLI 접속 방법 (0) | 2021.05.04 |
SELECT LIMIT - 위치 지정해서 원하는 개수만큼 레코드 선택하기 (0) | 2020.12.30 |
[MySQL] MySQL 8.0, Tomcat 9에서 context 설정하기 (0) | 2020.04.13 |