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.