我的golang版本:

[root@xxxxxx src# go version
go version go1.18.3 linux/amd64

==================================================================

用原始驱动方式处理:

import (
        "database/sql"
        "fmt"
        "time"
        _ "github.com/go-sql-driver/mysql"
)

---------------------------------------------------------------------------------

[root@xxxxxx src]# go run golang_mysql.go  (golang_mysql.go是我自己的go测试文件)
golang_mysql.go:7:2: no required module provides package github.com/go-sql-driver/mysql: go.mod file not found in current directory or any parent directory; see 'go help modules'

寻找方案过程:

[root@xxxxxx src]# go install golang.org/x/tools/gopls@latest
go: golang.org/x/tools/gopls@latest: module golang.org/x/tools/gopls: Get "https://proxy.golang.org/golang.org/x/tools/gopls/@v/list": dial tcp 172.217.25.177:443: i/o timeout

----没能解决

[root@xxxxxx src]# export GO111MODULE=off

[root@xxxxxx src]# go run golang_mysql.go 
golang_mysql.go:7:2: cannot find package "github.com/go-sql-driver/mysql" in any of:
        /usr/local/go/src/github.com/go-sql-driver/mysql (from $GOROOT)
        /root/go/src/github.com/go-sql-driver/mysql (from $GOPATH)

[root@xxxxxx src]# go install golang.org/x/tools/gopls@latest
go: modules disabled by GO111MODULE=off; see 'go help modules'

[root@xxxxxx src]# export GO111MODULE=on

[root@xxxxxx src# go env -w GOPROXY=https://goproxy.cn

[root@xxxxxx src# go get github.com/go-sql-driver/mysql 
go: go.mod file not found in current directory or any parent directory.
        'go get' is no longer supported outside a module.
        To build and install a command, use 'go install' with a version,
        like 'go install example.com/cmd@latest'
        For more information, see https://golang.org/doc/go-get-install-deprecation
        or run 'go help get' or 'go help install'.

======================================================

如上没能解决问题,决定用gorm方式连接mysql数据库;

import (
        "github.com/jinzhu/gorm"
        _ "github.com/jinzhu/gorm/dialects/mysql" // 需要用到mysql包里的init
)

---------------------------------------------------------------------------------

[root@xxxxxx src]# go run golang_mysql.go 
golang_mysql.go:4:2: no required module provides package github.com/jinzhu/gorm: go.mod file not found in current directory or any parent directory; see 'go help modules'
golang_mysql.go:5:2: no required module provides package github.com/jinzhu/gorm/dialects/mysql: go.mod file not found in current directory or any parent directory; see 'go help modules'

[root@xxxxxx src]# go get -u github.com/jinzhu/gorm
go: go.mod file not found in current directory or any parent directory.
        'go get' is no longer supported outside a module.
        To build and install a command, use 'go install' with a version,
        like 'go install example.com/cmd@latest'
        For more information, see https://golang.org/doc/go-get-install-deprecation
        or run 'go help get' or 'go help install'.

[root@xxxxxx src]# go env -w GO111MODULE=on
[root@xxxxxx src]#

[root@xxxxxx src]# go mod init src (src是所在目录)
go: creating new go.mod: module src
go: to add module requirements and sums:
        go mod tidy
[root@iZwz94pgv5sjajoool6xifZ src]# 
[root@iZwz94pgv5sjajoool6xifZ src]# go run golang_mysql.go  
golang_mysql.go:4:2: no required module provides package github.com/jinzhu/gorm; to add it:
        go get github.com/jinzhu/gorm
golang_mysql.go:5:2: no required module provides package github.com/jinzhu/gorm/dialects/mysql; to add it:
        go get github.com/jinzhu/gorm/dialects/mysql
[root@xxxxxx src]# 

[root@xxxxxx src]# go install golang.org/x/tools/gopls@latest
go: downloading golang.org/x/tools/gopls v0.8.4
go: downloading golang.org/x/tools v0.1.11
go: downloading golang.org/x/tools v0.1.11-0.20220513164230-dfee1649af67
go: downloading github.com/sergi/go-diff v1.1.0
go: downloading honnef.co/go/tools v0.3.0
go: downloading mvdan.cc/gofumpt v0.3.0
go: downloading mvdan.cc/xurls/v2 v2.4.0
go: downloading golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4
go: downloading golang.org/x/vuln v0.0.0-20220503210553-a5481fb0c8be
go: downloading golang.org/x/text v0.3.7
go: downloading golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e
go: downloading github.com/google/go-cmp v0.5.7
go: downloading golang.org/x/sys v0.0.0-20220209214540-3681064d5158
go: downloading golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
go: downloading github.com/BurntSushi/toml v1.0.0
[root@xxxxxx src]# 

[root@xxxxxx src]#  go run golang_mysql.go 
golang_mysql.go:4:2: no required module provides package github.com/jinzhu/gorm; to add it:
        go get github.com/jinzhu/gorm
golang_mysql.go:5:2: no required module provides package github.com/jinzhu/gorm/dialects/mysql; to add it:
        go get github.com/jinzhu/gorm/dialects/mysql

[root@xxxxxx src]# go get -u github.com/jinzhu/gorm
go: downloading github.com/jinzhu/gorm v1.9.16
go: downloading github.com/jinzhu/inflection v1.0.0
go: added github.com/jinzhu/gorm v1.9.16
go: added github.com/jinzhu/inflection v1.0.0
[root@xxxxxx src]# go get -u github.com/jinzhu/gorm/dialects/mysql
go: downloading github.com/go-sql-driver/mysql v1.5.0
go: downloading github.com/go-sql-driver/mysql v1.6.0
go: upgraded github.com/go-sql-driver/mysql v1.5.0 => v1.6.0
[root@xxxxxx src]# 

[root@xxxxxx src]# go run golang_mysql.go   (再次执行已经ok,不缺失报错)
# command-line-arguments
./golang_mysql.go:54:1: syntax error: unexpected EOF, expecting }
[root@xxxxxx src]# 

[root@xxxxxx src]# go get github.com/go-sql-driver/mysql   (也没有报错了)
[root@xxxxxx src]# 

====================== 【需要初始化当前主目录(即主模块)】=========

备注:修改go mod init src 的小插曲

一开始在目录: /root/go/src 下直接执行 go mod init src  (没问题)

后来在回到上一级目录:/root/go, 执行go mod init src 

[root@xxxxxx go]# go mod init src
go: creating new go.mod: module src
go: to add module requirements and sums:
        go mod tidy

回到src,执行go程序时,出现异常:

[root@xxxxxx src]# go run golang_mysql.go 
$GOPATH/go.mod exists but should not

执行环境变量,可以看到这个配置,问题不大:

[root@xxxxxx src]# export
declare -x GO111MODULE="on"
declare -x GOPATH="/root/go"
declare -x GOROOT="/usr/local/go"

于是回到/root/go/目录上看到:go.mod文件

其实/root/go/src/下,在刚才执行的go mod init src 也有此文件

原来:开启模块支持后,并不能与GOPATH共存,所以把项目从GOPATH中移出即可

 于是将/root/go/下的这个go.mod文件rm删除掉,在进入/root/go/src执行go文件,运行成功。

go.mod的内容为:

[root@xxxxxxx go]# vi go.mod 
module src

go 1.18

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐