我很擅长使用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中多次使用过相同的数据库服务。
答案 0 :(得分:0)
感谢每个人的答案。
Go的mysql驱动程序目前很难处理较旧的mysql版本。特别是这个问题是由于2006年mysql的old_password不兼容而引起的。因此使用旧数据库是一件痛苦的事。 (来源:https://github.com/go-sql-driver/mysql/wiki/old_passwords) - 我受过教育的猜测也适用于抛出“错误连接”错误的mymysql驱动程序。重复尝试连接后基本会超时。
特别感谢@Lepidosteus的回答让我发现了真正的问题。
答案 1 :(得分:0)
有趣的是,此错误也可能是由服务器端口中的空格引起的,如server.Run(":8080 ")
与server.Run(":8080")