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)