golang pq: syntax error at or near “,”

สวัสดีคับ บทความนี้เป็นบทความที่มาแนะวิธีการแก้ปัญหาเกี่ยวกับ Error pq: syntax error at or near “,” ครับ ส่วน Error เต็ม ๆ ก็ประมาณนี้ครับ

2019/09/26 23:24:03 http: panic serving [::1]:54261: pq: syntax error at or near ","
goroutine 5 [running]:
net/http.(*conn).serve.func1(0xc00003b0e0)
        C:/Go/src/net/http/server.go:1746 +0xd7
panic(0x6ed0a0, 0xc00011e240)
        C:/Go/src/runtime/panic.go:513 +0x1c7
_/D_/gitlab/W5-Go-Server-5/bookedsell-service/apis.(*CodAPI).SaveCod(0x9a93d0, 0x795a20, 0xc00011a000, 0xc000122100)
        D:/gitlab/W5-Go-Server-5/bookedsell-service/apis/codApi.go:59 +0x358
_/D_/gitlab/W5-Go-Server-5/bookedsell-service/apis.(*CodAPI).SaveCod-fm(0x795a20, 0xc00011a000, 0xc000122100)
        D:/gitlab/W5-Go-Server-5/bookedsell-service/routes/routes.go:23 +0x4f
net/http.HandlerFunc.ServeHTTP(0xc00002ee80, 0x795a20, 0xc00011a000, 0xc000122100)
        C:/Go/src/net/http/server.go:1964 +0x4b
_/D_/gitlab/W5-Go-Server-5/bookedsell-service/utils.CommonMiddleware.func1(0x795a20, 0xc00011a000, 0xc000122100)
        D:/gitlab/W5-Go-Server-5/bookedsell-service/utils/middleware.go:13 +0x19c
net/http.HandlerFunc.ServeHTTP(0xc000114020, 0x795a20, 0xc00011a000, 0xc000122100)
        C:/Go/src/net/http/server.go:1964 +0x4b
github.com/gorilla/mux.(*Router).ServeHTTP(0xc0000cc000, 0x795a20, 0xc00011a000, 0xc0000fe000)
        C:/Users/Doesystem/go/src/github.com/gorilla/mux/mux.go:212 +0xd7
net/http.serverHandler.ServeHTTP(0xc00003e8f0, 0x795a20, 0xc00011a000, 0xc0000fe000)
        C:/Go/src/net/http/server.go:2741 +0xb2
net/http.(*conn).serve(0xc00003b0e0, 0x795be0, 0xc000030340)
        C:/Go/src/net/http/server.go:1847 +0x64d
created by net/http.(*Server).Serve
        C:/Go/src/net/http/server.go:2851 +0x2fc

ซึ่งถ้าเราดูจาก Error แล้วจะเห็น ว่า มันแจ้งว่า Syntax Error ซึ่งการรันโค้ดในส่วนนี้เป็นการรันเพื่อ insert ข้อมูลตามนี้ครับ

err = db.QueryRow("insert into cod_blacklist (first_name, last_name) "+
		" values(?, ?) RETURNING pk ", requestStruct.FirstName, requestStruct.LastName).Scan(&pk)

Database ที่ผมใช้คือ PostgreSQL ซึ่งผมได้ย้ายมาจาก MySQL

จากการค้นหา Google ดูแล้ว ได้ความว่า มัน Error Syntax ตรงเครื่องหมายคำถาม (?) เพราะ lib ที่ใช้เค้าให้ใช้ $1 $2 แทน ตามตัวอย่างด้านล่าง

err = db.QueryRow("insert into cod_blacklist (first_name, last_name) "+
		" values($1, $2) RETURNING pk ", requestStruct.FirstName, requestStruct.LastName).Scan(&pk)

library ที่ใช้ก็ตามนี้ github.com/lib/pq

เพียงแค่นี้เราก็สามารถแก้ปัญหาได้แล้ว

Tags:

Add a Comment

Your email address will not be published. Required fields are marked *