Golang如何打开远程mysql连接?

The*_*hat 14 mysql go

我正在尝试使用go和database/sql包连接到远程mysql数据库.我发现go/mysql文档令人困惑.似乎没有一个例子如何连接到远程主机.像每个人都会使用localhost.到目前为止,我有这个

   import (
        "database/sql"
        _ "github.com/ziutek/mymysql/godrv"    
        db, err := sql.Open("mymysql", "tcp:"+dbHost*dbName+"/"+user+"/"+pass)
        defer db.Close()
Run Code Online (Sandbox Code Playgroud)

基于https://github.com/ziutek/mymysql的文档

[PROTOCOL_SPECFIIC*]DBNAME/USER/PASSWD
//
// where protocol specific part may be empty (this means connection to
// local server using default protocol). Currently possible forms:
//   DBNAME/USER/PASSWD
//   unix:SOCKPATH*DBNAME/USER/PASSWD
//   unix:SOCKPATH,OPTIONS*DBNAME/USER/PASSWD
//   tcp:ADDR*DBNAME/USER/PASSWD
//   tcp:ADDR,OPTIONS*DBNAME/USER/PASSWD
Run Code Online (Sandbox Code Playgroud)

我也试过了

 db, err := sql.Open("mymysql", "tcp:"+dbHost, dbName+"/"+user+"/"+pass) 
Run Code Online (Sandbox Code Playgroud)

而且它也没有用.整个语法看起来很神秘.

det*_*000 30

这些站点对于理解Go SQL非常有帮助:https://github.com/go-sql-driver/mysql/(即使您使用的是其他驱动程序)和http://go-database-sql.org/

有一些事情可能会有所帮助:

  1. 连接字符串为sql.Open()DSN格式. db, err := sql.Open("mysql", "<username>:<pw>@tcp(<HOST>:<port>)/<dbname>")适合我的关系.检查使用括号进行TCP连接.
  2. 您正在使用的驱动程序具有mysql.New()可以使用您在上面列出的格式打开连接的命令:( db := mysql.New(proto, "", addr, user, pass, dbname)请参阅https://github.com/ziutek/mymysql/blob/master/examples/simple.go)
  3. 令人困惑的是,sql.Open实际上并没有打开连接,它只是创建了一个数据库资源.您可以通过运行来验证它是否正常工作db.Ping()


小智 9

以下陈述对我有用:

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

db, err := sql.Open("mysql", "db_user:password@tcp(localhost:3306)/my_db")
Run Code Online (Sandbox Code Playgroud)

)