PostgreSQL funciona con marcadores de posición numerados ($1
, $2
, ...) de forma nativa en lugar de los habituales signos de interrogación posicionales. La documentación de la interfaz de Go también utiliza marcadores de posición numerados en sus ejemplos:
rows, err := db.Query("SELECT name FROM users WHERE age = $1", age)
Parece que la interfaz de Go no traduce los signos de interrogación a marcadores de posición numerados como lo hacen muchas interfaces, por lo que el signo de interrogación llega hasta la base de datos y lo confunde todo.
Debería poder cambiar a marcadores de posición numerados en lugar de signos de interrogación:
row := db.QueryRow(
"SELECT name FROM users WHERE id = $1", id)