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?