提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
问题
在学习完golang简单语法之后,开始接触go的orm(object relational mapping)框架。在使用框架时候出现报错。
代码如下:
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
// UserInfo 用户信息
type UserInfo struct {
ID uint
Name string
Gender string
Hobby string
}
func main() {
db, err := gorm.Open("mysql", "****:****@(localhost)/db1?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
panic(err)
}
defer db.Close()
// 自动迁移
db.AutoMigrate(&UserInfo{})
}
报错信息如下:
PS D:\work> go build -o server main.go server.go
no required module provides package main.go: go.mod file not found in current directory or any parent directory; see 'go help modules'
no required module provides package server.go: go.mod file not found in current directory or any parent directory; see 'go help modules'
解决
日志错误表明,尝试运行一个Go程序(orm_test1.go),它依赖于github.com/jinzhu/gorm和github.com/jinzhu/gorm/dialects/mysql这两个包,但是在当前目录或其任何父目录中都没有找到go.mod文件。go.mod文件是Go Modules的核心,用于定义项目依赖的包和版本。
所以我们需要4步就能解决一下问题:
1.go mod init 生成 go.mod 文件
D:\work\newGolangData\gorm> go mod init .\orm_test1.go
运行日志:
2.下载依赖包
go get -u github.com/jinzhu/gorm
go get -u github.com/jinzhu/gorm/dialects/mysql
//-u标志表示更新到最新版本
初始化完成后,Go会创建一个go.mod文件。接下来,你可以使用go get命令来下载你需要的依赖包
运行日志:
这个运行结果是密码错误的意思
3.重新运行go文件
go run orm_test1.go
成功 gorm自动迁移(根据结构体自动创建数据库表)