dsf6281 2014-09-03 02:20
浏览 80
已采纳

lib / pq连接,但连接失败查询失败

I'm running a fresh install of Ubuntu 14.04 from Digital Ocean. I've installed Postgres by calling sudo apt-get install postgresql postgresql-contrib. I installed the Postgres driver by calling go get github.com/lib/pq.

I made an Ubuntu user called foo. Then, I used createuser --interactive to create a Postgres role called foo with only the attribute Create DB. Next, I create a new database by calling createdb foo. Finally, I create a new table with CREATE TABLE. Oh, and I've added export PGHOST=/var/run/postgresql to my .bashrc file.

Then, I wrote the following file at /home/foo/go/src/dbtest.go.

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/lib/pq"
)

func main() {
    connInfo := "username=foo dbname=foo host=/var/run/postgresql sslmode=disable"
    db, err := sql.Open("postgres", connInfo)
    if err != nil {
        log.Fatalln(err)
    }
    defer db.Close()

    rows, err := db.Query("SELECT * FROM bar")
    if err != nil {
        log.Fatalln(err) // Code fails here.
    }
    defer rows.Close()

    fmt.Println(rows)
}

The problem I'm having is that the call to sql.Open doesn't return an error, but when I call db.Query I get driver: bad connection. I can use the Postgres interpreter just fine as user foo, but when I try a query from Go it fails. I suspect this might be a permission issue.

  • 写回答

1条回答 默认 最新

  • douxiong2999 2014-09-03 05:14
    关注

    The connection string parameter should be user=foo, not username=foo.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题