• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

拒绝连接Go + Postgres在Heroku上

postgresql 来源:Matt Sherman 8次浏览

我试图用Go去连接Heroku的Postgres。所有工作都很好。拒绝连接Go + Postgres在Heroku上

我在Heroku上收到的错误是dial tcp 127.0.0.1:5432: connection refused

我已经证实我的能力,通过heroku的命令行上的psql连接到数据库,并确认数据库url配置是正确的。代码很清晰,所以我想知道是否有较低级别的问题。

的代码是足够简单:

import (
    "database/sql" 
    "github.com/coopernurse/gorp" 
    _ "github.com/lib/pq" 
    "os" 
) 

func openDb() *sql.DB { 
    connection := os.Getenv("DATABASE_URL") 

    db, err := sql.Open("postgres", connection) 
    if err != nil { 
     log.Println(err) 
    } 

    return db 
} 

…和我进口github.com/lib/pq。 Go版本是1.1.2。

===========解决方案如下:

Heroku + Go对连接字符串非常特别。 URL风格似乎不允许指定sslmode = require,这是Heroku insists upon。

修改后的版本使用PQ解析URL到传统的Postgres连接字符串,并添加参数:

import (
    "database/sql" 
    "github.com/lib/pq" 
    "os" 
) 

func openDb() *sql.DB { 
    url := os.Getenv("DATABASE_URL") 
    connection, _ := pq.ParseURL(url) 
    connection += " sslmode=require" 

    db, err := sql.Open("postgres", connection) 
    if err != nil { 
     log.Println(err) 
    } 

    return db 
} 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)