복붙노트

[SQL] "운영자가 존재하지 않습니다 : 정수 =?" 포스트 그레스를 사용하는 경우

SQL

"운영자가 존재하지 않습니다 : 정수 =?" 포스트 그레스를 사용하는 경우

나는 이동의 데이터베이스 / 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 받고 있어요 : 연산자가 존재하지 않습니다 : 정수 =? 코드가 있음을 이해하지 못하는 것 같습니다? 단지 자리 표시 자입니다. 나는이 문제를 어떻게 해결할 수 있습니까?

해결법

  1. ==============================

    1.PostgreSQL는 번호 지정자로 ($ 1, $ 2, ...) 기본적으로이 아닌 보통의 위치 물음표를 사용할 수 있습니다. 이동 인터페이스에 대한 문서는 또한 예제 번호가 자리 표시자를 사용합니다 :

    PostgreSQL는 번호 지정자로 ($ 1, $ 2, ...) 기본적으로이 아닌 보통의 위치 물음표를 사용할 수 있습니다. 이동 인터페이스에 대한 문서는 또한 예제 번호가 자리 표시자를 사용합니다 :

    rows, err := db.Query("SELECT name FROM users WHERE age = $1", age)
    

    이동 인터페이스 번호 자리에 물음표가 데이터베이스에있는 모든 방법을 받고 모든 것을 혼란되도록 많은 인터페이스가하는 방법을 물음표를 번역하지 않는 것 같다.

    대신 물음표의 번호가 자리 표시로 전환 할 수 있어야한다 :

     row := db.QueryRow(
        "SELECT name FROM users WHERE id = $1", id)
    
  2. from https://stackoverflow.com/questions/29887094/operator-does-not-exist-integer-when-using-postgres by cc-by-sa and MIT license