stmt scan postgres golang conectar con sql postgresql go pq

postgres - scan sql golang



"El operador no existe: entero=?" Cuando se utiliza Postgres (1)

PostgreSQL funciona con marcadores de posición numerados ( $1 , $2 , ...) de forma nativa en lugar de los signos de interrogación posicionales habituales. La documentación para la interfaz 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 Go no está traduciendo 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 a la base de datos y 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)

Tengo una consulta SQL simple llamada dentro del método QueryRow proporcionado por el paquete de base de datos / sql de go.

import ( "github.com/codegangsta/martini" "github.com/martini-contrib/render" "net/http" "database/sql" "fmt" _ "github.com/lib/pq") ) type User struct { Name string } func Show(db *sql.DB, params martini.Params) { id := params["id"] row := db.QueryRow( "SELECT name FROM users WHERE id=?", id) u := User{} err := row.Scan(&u.Name) fmt.Println(err) }

Sin embargo, pq: operator does not exist: integer =? el error pq: operator does not exist: integer =? Parece que el código no entiende que el ? es solo un marcador de posición. ¿Cómo puedo arreglar esto?