"Operator does not exist: integer =?" 使用 Postgres 时
"Operator does not exist: integer =?" when using Postgres
我在 go 的 database/sql 包提供的 QueryRow 方法中调用了一个简单的 SQL 查询。
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)
}
但是,我收到错误 pq: operator does not exist: integer =?
看起来代码不理解 ?
只是一个占位符。我该如何解决这个问题?
PostgreSQL 本身使用编号占位符(</code>、<code>
、...)而不是通常的位置问号。 documentation for the Go interface 还在其示例中使用了编号占位符:
rows, err := db.Query("SELECT name FROM users WHERE age = ", age)
Go 界面似乎没有像许多界面那样将问号转换为带编号的占位符,因此问号一直进入数据库并混淆了所有内容。
您应该能够切换到编号占位符而不是问号:
row := db.QueryRow(
"SELECT name FROM users WHERE id = ", id)
我在 go 的 database/sql 包提供的 QueryRow 方法中调用了一个简单的 SQL 查询。
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)
}
但是,我收到错误 pq: operator does not exist: integer =?
看起来代码不理解 ?
只是一个占位符。我该如何解决这个问题?
PostgreSQL 本身使用编号占位符(</code>、<code>
、...)而不是通常的位置问号。 documentation for the Go interface 还在其示例中使用了编号占位符:
rows, err := db.Query("SELECT name FROM users WHERE age = ", age)
Go 界面似乎没有像许多界面那样将问号转换为带编号的占位符,因此问号一直进入数据库并混淆了所有内容。
您应该能够切换到编号占位符而不是问号:
row := db.QueryRow(
"SELECT name FROM users WHERE id = ", id)