我尝试使用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()
基于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
我也试过
db, err := sql.Open("mymysql", "tcp:"+dbHost, dbName+"/"+user+"/"+pass)
它也没有用。整个语法看起来很神秘。
答案 0 :(得分:28)
这些网站对于理解Go SQL非常有帮助:https://github.com/go-sql-driver/mysql/(即使您使用的是其他驱动程序)和http://go-database-sql.org/
有一些事情可能会有所帮助:
sql.Open()
的连接字符串为DSN格式。 db, err := sql.Open("mysql", "<username>:<pw>@tcp(<HOST>:<port>)/<dbname>")
适用于我的联系。检查使用括号进行TCP连接。mysql.New()
命令,该命令可以使用您在上面列出的格式打开连接:db := mysql.New(proto, "", addr, user, pass, dbname)
sql.Open
实际上并没有打开连接,只是创建了一个数据库资源。您可以通过运行db.Ping()
答案 1 :(得分:2)
以下声明适用于我:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
db, err := sql.Open("mysql", "db_user:password@tcp(localhost:3306)/my_db")
)