PostgreSQL arbeitet mit nummerierten Platzhaltern ($1
, $2
, ...) nativ statt der üblichen positionellen Fragezeichen. Auch die Dokumentation für die Go-Schnittstelle verwendet in ihren Beispielen nummerierte Platzhalter:
rows, err := db.Query("SELECT name FROM users WHERE age = $1", age)
Scheint, dass die Go-Schnittstelle die Fragezeichen nicht in nummerierte Platzhalter übersetzt, wie es viele Schnittstellen tun, also gelangt das Fragezeichen bis zur Datenbank und verwirrt alles.
Sie sollten anstelle von Fragezeichen zu nummerierten Platzhaltern wechseln können:
row := db.QueryRow(
"SELECT name FROM users WHERE id = $1", id)