从 github 存储库导入 go-sql-driver/sql 时出错
Posted
技术标签:
【中文标题】从 github 存储库导入 go-sql-driver/sql 时出错【英文标题】:Error on importing go-sql-driver/sql from github repository 【发布时间】:2021-12-30 11:04:07 【问题描述】:正如标题所说,我在导入 go-mysql-driver 包时出错。我已经在我的机器上安装了 go-my-sql 驱动程序,但错误仍然存在。我使用 XAMPP 进行本地托管,这是程序块。
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
could not import github.com/go-sql-driver/mysql (no required modules provides package "github.com/go-sql-driver/mysql")
screenshot of what's happening
【问题讨论】:
我认为该错误意味着您的go.mod
文件缺少该软件包的 require
指令。
您还应该尝试在 IDE 之外构建程序,即直接使用 go build
工具。您的 IDE 可能只是配置错误。
你没有“安装”一个非主包,所以说你已经安装了它并不意味着什么。如果您运行go get github.com/go-sql-driver/mysql
,它会将其添加到您的go.mod
。它是否正确地列在那里?
很抱歉让大家对我的问题感到困惑。在这里,我只是一个学生,我只是安装 vscode 并开始学习课程。我从课程中获得了 github 文件,但我仍然很困惑为什么我想运行 go 编码时出错。我也不擅长打字,所以也许这就是让你们感到困惑的原因。对此我感到非常抱歉。
【参考方案1】:
您的 IDE 并未向您展示全貌。通过在命令行上运行 go run main.go
(或您拥有的任何主文件),您可以看到与您在 IDE 上看到的相同的错误,但有一些额外的:
$ go run main.go
main.go:7:5: no required module provides package github.com/go-sql-driver/mysql; to add it:
go get github.com/go-sql-driver/mysql
通过发出建议的命令go get github.com/go-sql-driver/mysql
,您将获得添加到您的go.mod
文件的依赖项,并且包的内容将被下载到您的机器上。
您的下一次执行将起作用:
$ go run main.go
Hello world
我已对您的代码进行了一些小的修改以使其正常工作,为了完整起见,我将在此处添加它们:
我使用了相同的来源,但将package
名称更改为 main
。
我在文件底部添加了一个主函数:
func main()
fmt.Println("Hello world")
_, err := Connect("username", "password", "localhost", "db")
if err != nil
panic(err)
我已保存到一个名为 main.go
的文件中
我已经通过运行go mod init test
和go mod tidy
初始化了go.mod
文件,然后我采取了答案开头描述的步骤。
【讨论】:
很抱歉让您对我的问题感到困惑。在这里,我只是一个学生,我只是安装 vscode 并开始学习课程。我从课程中获得了 github 文件,但我仍然很困惑为什么我想运行 go 编码时出现错误。我也不擅长打字,所以也许这就是让你感到困惑的原因。对此我感到非常抱歉。【参考方案2】:您似乎阅读了较旧版本的教程。
Go 1.17 要求依赖项必须在go.mod
中显式。
也许你可以先试试 go module (https://go.dev/blog/using-go-modules)
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于从 github 存储库导入 go-sql-driver/sql 时出错的主要内容,如果未能解决你的问题,请参考以下文章
从 github 存储库导入 go-sql-driver/sql 时出错