亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為 pgxpool.Config 設置 DialFunc

為 pgxpool.Config 設置 DialFunc

Go
慕容森 2022-10-24 16:56:12
我無法使用“github.com/jackc/pgx/v4/pgxpool”庫通過 ssh 隧道創建與 postgres 數據庫的連接。我似乎無法弄清楚如何為我想用來建立連接的 *pgxpool.Config 設置 DialFunc。這就是我想要做的:        sshConnStr := mkPostgresXViaSSHConnStr(config, tz)                config, err := parseSshConnStr(sshConnStr)        // var config *pgsshConfig        sshcon, err := ssh.Dial("tcp", fmt.Sprintf("%s:%d", config.tunnelHost, config.tunnelConfig), &config.tunnelConfig)        // var sshcon *ssh.Client        cfg, err = pgxpool.ParseConfig(config.pgConnStr)        // var cfg *pgxpool.Config        cfg.ConnConfig.DialFunc = func(network, addr string) (net.Conn, error) {            return sshcon.Dial(network, addr)        }當我嘗試設置 DialFunc 時,出現以下錯誤:無法使用 (func(network, addr string) (net.Conn, error) literal) (value of type func(network string, addr string) (net.Conn, error )) 作為賦值中的 pgconn.DialFunc 值關于如何讓它工作的任何建議?
查看完整描述

2 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

添加上下文并轉換為pgconn.DialFunc:


package main


import (

        "context"

        "net"


        "github.com/jackc/pgconn"

        "github.com/jackc/pgx/v4/pgxpool"

)


func main() {

        cfg, _ := pgxpool.ParseConfig("")

        myDial := func(ctx context.Context, network, addr string) (net.Conn, error) {

                return nil, nil

        }

        cfg.ConnConfig.DialFunc = pgconn.DialFunc(myDial)

}


查看完整回答
反對 回復 2022-10-24
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

我正在查看 DialFunc 的錯誤類型。對于 pgx/v3.6.2,只需要網絡和地址作為參數。在更新版本中,pgx/v4 context.Context 也需要作為變量傳遞(無論是否實際使用)。修復錯誤的更新是這樣的:

cfg.ConnConfig.DialFunc = func(ctx context.Context, network, addr string) (net.Conn, error) {
           return sshcon.Dial(network, addr)
           }


查看完整回答
反對 回復 2022-10-24
  • 2 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號