导入github仓库的go-sql-driver/mysql包时报错该如何解决?
Go导入go-mysql-driver报错解决方案
报错说明
could not import github.com/go-sql-driver/mysql (no required modules provides package "github.com/go-sql-driver/mysql")
问题原因
Go 1.11及以上版本默认使用Go Modules管理项目依赖,即使全局安装了驱动包,如果没有在当前项目的依赖声明文件(go.mod)中添加该依赖,项目依然无法识别导入。
排查解决步骤
- 第一步:初始化项目模块(未初始化过的项目执行)
进入项目根目录,执行命令:go mod init <你的项目名称> - 第二步:添加mysql驱动依赖到当前项目
执行命令:go get github.com/go-sql-driver/mysql - 第三步:国内用户如果拉取依赖失败,可先切换国内代理再重新执行上一步:
go env -w GOPROXY=https://goproxy.cn,direct - 第四步:整理依赖同步缺失包
执行命令:go mod tidy
执行完以上步骤后重启IDE即可解决导入报错问题。
关联业务代码
package model import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) type Table interface { Name() string Field() ([]string, []interface{}) } func Connect(username string, password string, host string, database string) (*sql.DB, error) { conn := fmt.Sprintf("%s:%s@tcp(%s:3306)/%s", username, password, host, database) db, err := sql.Open("mysql", conn) return db, err } func CreateDB(db *sql.DB, name string) error { query := fmt.Sprintf("CREATE DATABASE %v", name) _, err := db.Exec(query) return err } func CreateTable(db *sql.DB, query string) error { _, err := db.Exec(query) return err } func DropDB(db *sql.DB, name string) error { query := fmt.Sprintf("DROP DATABASE %v", name) _, err := db.Exec(query) return err }
内容的提问来源于stack exchange,提问作者Jarsada
相关产品推荐
相关产品推荐

