PostgreSQL hoạt động với trình giữ chỗ được đánh số ($1
, $2
, ...) tự nhiên thay vì các dấu hỏi vị trí thông thường. Tài liệu cho giao diện Go cũng sử dụng các trình giữ chỗ được đánh số trong các ví dụ của nó:
rows, err := db.Query("SELECT name FROM users WHERE age = $1", age)
Có vẻ như giao diện Go không dịch các dấu chấm hỏi sang các chỗ dành sẵn được đánh số theo cách mà nhiều giao diện làm, vì vậy dấu hỏi đang đi vào cơ sở dữ liệu và gây nhầm lẫn mọi thứ.
Bạn có thể chuyển sang phần giữ chỗ được đánh số thay vì dấu chấm hỏi:
row := db.QueryRow(
"SELECT name FROM users WHERE id = $1", id)