Go语言入门心法(八): mysql驱动安装报错onnection failed
http://golang.org/pkg/database/sql/
Examples · go-sql-driver/mysql Wiki · GitHub
GitHub - VividCortex/go-database-sql-tutorial: A tutorial for Go's database/sql package
当项目中需要引入三方依赖,此时要让依赖被我们项目模块识别,需要作系列操作,本文我们一引入mysql数据库驱动为例,说明引入操作的步骤,开发工具使用的是Goland IDEA;
1.1 如在项目中引入:_ "github.com/go-sql-driver/mysql"
- package main
-
- import (
- "database/sql"
- "fmt"
- "log"
- // 注册驱动器 _下划线表示执行驱动中的init函数,不使用其他函数
- _ "github.com/go-sql-driver/mysql"
- )
-
- /*
- go语言连接mysql数据库操作:
- */
- func main() {
- db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/tope-pay-user")
- if err != nil {
- fmt.Println("数据库连接异常: ", err)
- }
-
- // 延迟执行Closer()函数
- defer db.Close()
-
- // 验证连接的可用性
- err = db.Ping()
- if err != nil {
- log.Fatal("数据库连接失败:", err)
- }
- log.Println("数据库连接成功")
- }
如果遇到如下错误:Cannot resolve symbol 'github.com' 说明你项目环境有问题;
一般来说国内不能直接访问golang官方包:所以需要做个代理就是设置GOPROX环境变量
设置了Go语言的环境变量:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
设置完后,在GoLand控制台执行go mod download在执行下载mod报错:
报错信息是连接不上官方网址,可是我明明走了代理不访问官方网址,走https://goproxy.cn的啊。开始查找原因。
golang 配置go env参数时报错
warning: go env -w GOPROXY=… does not override conflicting OS environment variable
解决方法:
说明当前配置已在系统环境变量配置文件中配置,使用go env -w 方式无效,可以直接通过修改环境变量配置文件中的参数来修改
GO111MODULE 环境变量用于开启或关闭 Go 语言中的模块支持,它有 off、on、auto 三个可选值,默认为 auto。
GO111MODULE=off
无模块支持,go 会从 $GOPATH 文件夹和 vendor 目录中寻找依赖项。
GO111MODULE=on
模块支持,go 忽略 $GOPATH 文件夹,只根据 go.mod 下载依赖。
GO111MODULE=auto
在 $GOPATH/src 外层且根目录有 go.mod 文件时,开启模块支持;否者无模块支持。
warning: go env -w GOPROXY=… does not override conflicting OS environment variable
说明我们一家设置了goproxy代理变量,本文是在goland开发工具中设置GOPROXY变量,如下图所示:
那么如果需要在cmd中设置,可以去掉IDEA中设置即可;
类似这种的错误: missing go.sum entry; to add it:
D:\program_file\go_workspace> go mod tidy
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
这个意思go.mod文件中不包括当前运行该命令的目录,运行该命令目录要么是go.mod文件什么的模块目录,或者是该运行目录下的子目录;
我们在,项目根目录文件夹下创建一个go.mod文件,该文件由goland自动生成: 在项目"根"目录下:鼠标右键-->new-->Go Modules File 点击该选项,就会在根目录下生成一个go.mod文件
go.mod文件内容如下:
// module 默认自动生成的文项目文件夹的名称module go_workspace // 模块名称可以改为项目文件夹的相同或者时子目录
再次运行相关命令Ok
PS D:\program_file\go_workspace> go mod tidy
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
PS D:\program_file\go_workspace> cd .\org.jd.data\
PS D:\program_file\go_workspace\org.jd.data> go mod tidy
PS D:\program_file\go_workspace\org.jd.data> go mod tidy
PS D:\program_file\go_workspace\org.jd.data> cd ..
PS D:\program_file\go_workspace> go mod tidy
PS D:\program_file\go_workspace> go mod tidy
PS D:\program_file\go_workspace> go mod tidy
PS D:\program_file\go_workspace> go mod tidy
引入语法:
require ( // 该处引入三方依赖 github.com/go-sql-driver/mysql v1.7.1 )
如下载安装redis最新依赖:
PS D:\program_file\go_workspace> go install github.com/go-redis/redis@latest
go: downloading github.com/go-redis/redis v6.15.9+incompatible或者运行:下载redis三方依赖
PS D:\program_file\go_workspace>go get github.com/go-redis/redis
最后三方依赖引入效果:
引入成功后,在idea工具中可以看到引入的第三方模块
更多详细看官方文档: Go模块依赖解决详细文档|及打包发布解决方案