如何正确地使用Go连接MySQL Docker容器?

huangapple go评论76阅读模式
英文:

How to correctly connect mysql docker container with go ?

问题

我今天开始学习Docker,遇到了一个大问题。我想通过go-sql-driver/mysql打开MySQL连接。

我可以使用sequel pro在localhost:3306上连接MySQL容器,但是在go-sql-driver/mysql中似乎无法工作。

这是我尝试的代码:

db, err := sql.Open("mysql", "root:welcome@/tcp(127.0.0.1:3306)/test")

//也尝试过172.17.0.1:3306和172.17.0.2:3306

这是我的容器网络信息:

"Networks": {
            "bridge": {
                "IPAMConfig": null,
                "Links": null,
                "Aliases": null,
                "NetworkID": "47b2a5c798522f5eb6688c4540b4017335eb174528d510b9f1d35d125313017c",
                "EndpointID": "ca2256684928e4184efd36f880cd70d3809d79db5b30c10ab37c66ccbbbba610",
                "Gateway": "172.17.0.1",
                "IPAddress": "172.17.0.2",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "MacAddress": "02:42:ac:11:00:02"
            }
        }

由于我对虚拟机还不熟悉,我不确定应该提供哪些信息才能得到正确的答案。

英文:

I started to learn docker today and have big blocker.
What I am trying to do is thatopen mysql connection using go-sql-driver/mysql.

I can connect mysql container using sequel pro with localhost:3306
However, it seems not working with go-sql-driver/mysql

db, err := sql.Open("mysql", "root:welcome@/tcp(127.0.0.1:3306)/test")

//tried 172.17.0.1:3306 and 172.17.0.2:3306

and this is my container's network info

"Networks": {
            "bridge": {
                "IPAMConfig": null,
                "Links": null,
                "Aliases": null,
                "NetworkID": "47b2a5c798522f5eb6688c4540b4017335eb174528d510b9f1d35d125313017c",
                "EndpointID": "ca2256684928e4184efd36f880cd70d3809d79db5b30c10ab37c66ccbbbba610",
                "Gateway": "172.17.0.1",
                "IPAddress": "172.17.0.2",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "MacAddress": "02:42:ac:11:00:02"
            }
        }

I am not sure which info I should provide to get right answer since I am new to vm

答案1

得分: 4

你的连接有问题,请使用以下代码:

db, err := sql.Open("mysql", "root:welcome@tcp(127.0.0.1:3306)/test")

注意,在“@”之后删除了“/”。

README中指出,有效的连接路径应该是这样的:

[用户名[:密码]@][协议[(地址)]]/数据库名
英文:

Your connection is wrong, use

db, err := sql.Open("mysql", "root:welcome@tcp(127.0.0.1:3306)/test")

Notice that "/" is removed after "@"

The README says a valid connection path is like

[username[:password]@][protocol[(address)]]/dbname

huangapple
  • 本文由 发表于 2016年11月22日 03:38:26
  • 转载请务必保留本文链接:https://go.coder-hub.com/40728020.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定