【发布时间】:2021-04-13 19:05:48
【问题描述】:
我正在尝试使用 jackc/pgx 包连接到我的 postgres 数据库,并且我正在按照提供的示例进行操作。问题是代码卡在连接调用中。我试过在它之后打印一些东西,但它不打印。
var dbURL string = fmt.Sprintf("postgresql://%s:%s@%s:%s/%s", user, password, host, port, dbname)
fmt.Println(dbURL)
conn, err := pgx.Connect(context.Background(), dbURL)
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
os.Exit(1)
}
defer conn.Close(context.Background())
var text string
err = conn.QueryRow(context.Background(), "select text from questions where id=$1", 1).Scan(&text)
if err != nil {
fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
os.Exit(1)
}
fmt.Println(text)
输出:
postgresql://postgres:password@127.0.0.1:52269/database_name
我做错了什么?我可以使用 pgAdmin 4 连接到数据库,并且在使用 go 中的标准 sql 之前已经连接到它。
connectionString := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable", user, password, dbname)
a.DB, err = sql.Open("postgres", connectionString)
【问题讨论】:
-
它并没有像我说的那样过去。它不返回任何东西。打印输出后,它卡在那里,我必须 ctrl+c。我意识到端口是错误的,并且修复了它。它不应该给出错误而不是卡在那里吗?
-
不应该只是
postgres://...而不是postgresql://...吗? -
我见过的资料说postgresql
-
@Myntekt 只要您尝试过使用
postgres://并且您会看到同样的问题,这很公平。 -
@Myntekt 请注意,您的
dbURL没有sslmode设置,而据称工作的connectionString有,所以也许这是您的问题?
标签: postgresql go