青训营大项目 使用gorm读取mysql数据2 | 青训营

63 阅读1分钟

错误解决1

使用命令

go run main.go

运行main.go文件。报错如下:

ERROR 1130: Host ‘xxx.xxx.xxx.xxx’ is not allowed to connect to this MySQL server.

根据链接 www.shulanxt.com/doc/dbdoc/m… 链接的方法二:改表法成功解决。

错误解决2

继续使用命令

go run main.go

运行main.go文件。报错如下:

2023/08/30 15:13:36 /home/douyin-demo/simple-demo/main.go:31 Error 1146 (42S02): Table 'douyin.users' doesn't exist

[0.931ms] [rows:0] SELECT * FROM users ID Name Age

初步思考是因为gorm对结构体名和数据表名的转换关系默认为直接取消大小写并在末尾加s。

根据 blog.csdn.net/lilongsy/ar… 链接中可知通过配置gorm.Config中的NamingStrategy来选择结构体名和数据表名的转换关系。该方法需要特别同步数据库和ORM代码中的表名。

db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
		NamingStrategy: schema.NamingStrategy{
			TablePrefix:   "",   // 表前缀
			SingularTable: true, // 禁用表名复数
		}})

根据 zhuanlan.zhihu.com/p/651985444 链接中可知,另一种方法是直接使用db.Table('table name')显式指定mysql数据表名。该方法不需要特别同步数据库和ORM代码中的表名。