PostgreSQL работи с номерирани заместители ($1
, $2
, ...) естествено, а не обичайните позиционни въпросителни знаци. Документацията за интерфейса Go също използва номерирани заместители в своите примери:
rows, err := db.Query("SELECT name FROM users WHERE age = $1", age)
Изглежда, че интерфейсът Go не превежда въпросителните знаци в номерирани заместители, както правят много интерфейси, така че въпросителният знак стига чак до базата данни и обърква всичко.
Трябва да можете да превключвате към номерирани заместители вместо въпросителни:
row := db.QueryRow(
"SELECT name FROM users WHERE id = $1", id)