我有mysql社区服务器安装在我的mac上,它是设置和工作,我可以连接到它localhost:3306 using navicat for mysql。但是,每当我尝试从使用docker compose运行的go应用程序连接到数据库时,都会出现以下错误:
dial tcp 127.0.0.1:3306: connect: connection refused
这是我的密码:
// dbUser, dbPassword, & dbName are all variables that definitely contain the correct values
db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(localhost:3306)/"+dbName)
if err != nil {
panic(err.Error())
}
defer db.Close()
query, err := db.Query("INSERT INTO test_table(test_field) VALUES(This is a test)")
if err != nil {
panic(err.Error())
}
defer query.Close()
我正在导入:
"database/sql"
_ "github.com/go-sql-driver/mysql"
任何帮助都将不胜感激,谢谢。
3条答案
按热度按时间zhte4eai1#
我的解决办法是把这一页上的答案结合起来。我收到错误:
我的联系是这样构建的:
我读了@cosmic ossifrage的文章,但不知道如何实现它,所以我应用了vita给出的答案。这不起作用,因为mysql:3306 was docker无法理解该位置,因此连接失败。然后我用@cosmic ossifrage的解决方案和vita的解决方案得到一个工作设置。
希望这有助于任何人寻找答案!感谢其他贡献者帮助我把它拼凑起来
rpppsulh2#
你无法连接到
localhost
从docker(特别是在mac上,docker运行在linux虚拟机的底层),并期望访问主机提供的服务。但是,可以使用特殊主机名通过ip地址访问主机
docker.for.mac.localhost
. 没有任何其他docker网络问题,请修改您的连接字符串以使用docker.for.mac.localhost:3306
应解决此问题并允许访问主机上的服务。(docker文档中提供了有关此解决方法的更多详细信息。)
rkue9o1l3#
你应该这样打开: