pq:双精度类型的输入语法无效:" $ 1"与Golang

时间:2015-07-31 17:21:15

标签: postgresql go

我尝试在INSERT程序中的postgresql数据库中执行简单的GO操作。我的号码0float64,我的数据库中有一列需要double precision的列。我不知道我需要将数字转换为数据库以接受该值。

1 个答案:

答案 0 :(得分:1)

PostgreSQL驱动程序可以很好地处理float64到双精度列的插入:

tmp=# \d test
          Table "public.test"
 Column |       Type       | Modifiers 
--------+------------------+-----------
 v      | double precision | 

代码:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/lib/pq"
    "log"
)

func main() {
    db, err := sql.Open("postgres", "user=alex dbname=tmp sslmode=disable")
    if err != nil {
        log.Fatal(err)
    }

    result, err := db.Exec("insert into test values ($1)", float64(0.5))
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(result)
}

然后:

tmp=# select * from test ;
  v  
-----
 0.5
 0.5
 0.5
(3 rows)

问题被低估了,因为显然您提供的问题描述不够来重现问题。我已经尝试过了,但是你看到它正在发挥作用。