从 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 testgo 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 时出错

从缺少 setup.py 文件的 git 存储库导入库

删除github中的原始存储库时导入的存储库会发生啥

将现有源代码导入 GitHub

使用 Pip Install 在 Github 上导入 Python 库 [重复]

从私有存储库切换到公共存储库,但 github 页面不发布站点