Gorm에서 IN 문장에 오류가 발생했을 때의 해결 방법 사용
Gorm에서 IN을 사용하는 경우
IN 문장
string
형slice
형을 사용할 때 ?
의 부분을 괄호로 묶지 않으면 SQL 문법 오류가 발생한다.오류
[2021-10-17 08:00:06] Error 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 '?,?,?,?,?,?,?)' at line 1
(/app/infra/mysql/t_works.go:21)
[2021-10-17 08:00:06] [0.50ms] SELECT * FROM `t_works` WHERE (uuid IN 'ayT26n5uOBJVRS','RbfnBB3DQQrVXbQns1','dCaElk4mrpjph6rx2','8nKhTk9dFI5A','1EkmFP2imIso23','vGrj5RVqw3EoeF7vSGg','ygx8ffvUsywB4Vy')
[0 rows affected or returned ]
before (오류 발생 코드)
func FetchWorksByUUIDs(uuids []string) ([]models.Work, error) {
works := []models.Work{}
// 中略
db.Where("uuid IN ?", uuids).Find(&works)
}
대응 조치: 봉화 63?괄호로 묶다
func FetchWorksByUUIDs(uuids []string) ([]models.Work, error) {
works := []models.Work{}
// 中略
db.Where("uuid IN (?)", uuids).Find(&works)
}
최후
공식은 별도
(?)
그렇습니까?쓰지 않고 ()로 동그라미를 쳐서 막았다.※ 차라리 슬라이스를 IN 조건에 직접 포함시키는 것이 일반적이어서 따랐습니다.
그래서 상술한 SQL 문법 오류가 발생하여 약간 조사, 분석을 하여 최종적으로 자기 해결에 이르렀다.
왜냐하면 인터넷에서 이 오류를 당해서 글을 쓰는 사람을 못 봤어요.
같은 오류가 있는 사람을 위해 기사를 쓰는 게 좋을 것 같아서 기사를 썼어요.
gorm log mode를 진짜로 만들어서 해결했어요!최고!
개발 과정에서 이날 로그 모드를 진짜로 설정하겠다고 다시 한 번 맹세했다.
db.LogMode(true)
Reference
이 문제에 관하여(Gorm에서 IN 문장에 오류가 발생했을 때의 해결 방법 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/skytrilingineer/articles/0b18c044ad018f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)