wil*_*205 6 mysql database go docker docker-compose
我的 Mac 上安装了 Mysql 社区服务器,它已设置并正在运行,我可以使用 Navicat for MySQL 在 localhost:3306 上连接到它。但是,每当我尝试从使用 docker-compose 运行的 go 应用程序连接到数据库时,都会出现以下错误:
dial tcp 127.0.0.1:3306: connect: connection refused
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
// 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()
Run Code Online (Sandbox Code Playgroud)
我正在进口:
"database/sql"
_ "github.com/go-sql-driver/mysql"
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,谢谢。
Cos*_*age 10
您无法localhost
从 Docker连接(尤其是在 Mac 上,其中 Docker 在表面下的 Linux VM 中运行)并期望访问主机提供的服务。
但是,有使用特殊主机名通过 IP 地址访问主机的功能docker.for.mac.localhost
。如果没有任何其他 Docker 网络问题,修改要使用的连接字符串docker.for.mac.localhost:3306
应该可以解决此问题并允许访问主机上的服务。
(Docker 文档中提供了有关此解决方法的更多详细信息。)
小智 6
你应该这样打开:
db, err := sql.Open("mysql", "root:root@tcp(mysql:3306)/GoLife")
Run Code Online (Sandbox Code Playgroud)
mysql
是 docker-compose 服务名称。
归档时间: |
|
查看次数: |
13658 次 |
最近记录: |