为了账号安全,请及时绑定邮箱和手机立即绑定

出现错误“dial tcp xxx:xxx:xxx:xxx:3306:

出现错误“dial tcp xxx:xxx:xxx:xxx:3306:

Go
aluckdog 2022-11-23 19:29:23

我有一个调用 sql 连接的 api。这是到某个远程服务器的 sql 连接。执行查询时出现错误“dial tcp xxx:xxx:xxx:xxx:3306: connect: connection refused”


sql连接代码


func ConnectToMysqlDB(dbUser, dbPassword, dbHost, dbName string) *sql.DB {

    connstr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", dbUser, dbPassword, dbHost, "3306", dbName)

    var err error

    log.Println("Carrying mysql query", connstr)

    dB, err := sql.Open("mysql", connstr)

    if err != nil {

        log.Fatalf("error connection to mysql [%v] ..!!", err)

    }

    log.Print("mysql initialized ..!!")

    return dB

}

查询功能


func GetUserIDs(dB *sql.DB, users []string) []int {

    var newUsers []int

    var newUser int


    query := "SELECT id FROM phplist_user_user WHERE foreignkey in (%s)"

    var usersStr string

    for _, val := range users {

        usersStr = usersStr + "'" + val + "'" + ","

    }

    usersStr = strings.TrimSuffix(usersStr, ",")


    query = fmt.Sprintf(query, usersStr)


    rows, err := dB.Query(query)

    if err != nil {

        fmt.Printf("Error in query : [%v]", err)

    }

    defer rows.Close()

    for rows.Next() {

        rows.Scan(&newUser)

        newUsers = append(newUsers, newUser)

    }


    return newUsers

}

我收到错误的原因是什么:查询错误:[dial tcp xxx.xxx.xxx.xxx:3306: connect: connection refused]


查看完整描述

1 回答

?
慕神8447489

TA贡献1499条经验 获得超1个赞

我的两分钱:

  1. 使用 sql.DB 中的 Ping() 方法验证您是否真的连接到 mysql — 但是您必须注意某些错误可能是暂时的。例如,如果您遇到网络问题或数据库“重启”(高可用性取决于许多因素)

  2. 检查您是否使用了正确的 ip 和端口。也许数据库和应用程序在不同的网络中,或者数据库服务器绑定了多个网卡。

另外,检查这是否有帮助 https://github.com/go-sql-driver/mysql#allowcleartextpasswords


查看完整回答
反对 回复 2022-11-23

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信