2

我对使用 go 比较陌生,并且在连接到外部 mysql 数据库时遇到问题。我正在使用 go-sql-driver ,它的接缝相当不错。欢迎向其他司机提出建议!

这是整个程序:

import (
  "database/sql"
   _ "github.com/go-sql-driver/mysql"
  "fmt"
)

const (
  DB_HOST = "tcp(http://thedburl.com)"
  DB_NAME = "nameofdatabase"
  DB_USER = "username"
  DB_PW = "password"
)

func main() {
  dsn := DB_USER + ":" + DB_PW + "@" + DB_HOST + "/" + DB_NAME + "?charset=uf8"
  db, err := sql.Open("mysql", dsn)

  if err != nil {
       fmt.Println("shiiet didn't work yo! Initialization failed")
  }

  defer db.Close() // go's purty cool

  var str string
  q := "SELECT * FROM forums"
  err = db.QueryRow(q).Scan(&str)

  if err != nil {
      fmt.Println(err)
  }

  fmt.Println(str)
}

根据请求,我收到以下错误

 "GetAddrInfoW: The specified class was not found."

有任何想法吗?我在网上坐了几个小时,似乎无法解决问题。值得注意的是,我在 java 中多次使用相同的数据库服务。

4

2 回答 2

1

有趣的是,这个错误也可能是由服务器端口中的空格引起的,如server.Run(":8080 ")vsserver.Run(":8080")

于 2020-05-07T14:25:53.437 回答
0

感谢大家的回答。

Go 的 mysql 驱动程序目前很难处理旧的 mysql 版本。具体来说,这个问题是由于 2006 年 mysql 的 old_password 不兼容而发生的。因此,使用旧数据库是一件痛苦的事情。(来源:https ://github.com/go-sql-driver/mysql/wiki/old_passwords ) - 我有根据的猜测也适用于抛出“连接错误”错误的 mymysql 驱动程序。在重复尝试连接后基本上会超时。

特别感谢@Lepidosteus,他的回答让我发现了真正的问题。

于 2013-05-27T11:09:17.347 回答