gorm的基本操作指南

本文介绍了使用GORM库在Go语言中操作MySQL(MariaDB)数据库的基本步骤,包括链接数据库、创建数据库时遇到的自增主键问题、GORM默认表名规则以及解决Windows系统下MariaDB字符编码导致的乱码问题。通过实例展示了配置和代码片段,帮助读者理解和解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导言

倒腾了一上午终于简简单单的完成了增删改查,查了很多帖子,总是和自己想要的不一样,希望自己的可以精辟一些

链接数据库

链接数据库的形式:
db, err := gorm.Open(“mysql”, “root:0402@(localhost)/test?charset=utf8&parseTime=True&loc=Local”)
if err != nil {
fmt.Println(“我出错啦”)
panic(err)
}`
首先需要明确的是Open(“mysql”, “用户名:密码@/数据库名?charset=字符集”),其中@之后的内容可写可不写,但是@一定要存在,@(localhost),@tcp(localhost),@tcp(localhost:3306)皆可。

创建数据库

这是我的的结构体
生成的表的数据结构如下:
在这里插入图片描述
但是我声明了autoIncrement,并不会自增,emmm,auto_increment和auto increment都尝试过了。
在这里插入图片描述
gorm官方文档
对于gorm,会把错误通过Error参数返回,而Find()、Create()函数返回的是*gorm.db,需要注意:
在这里插入图片描述

表名字的问题

gorm默认是表名是复数形式,逻辑上很好理解。但是我一开始创建的表名叫"friend",但是下面这段代码,执行起来就是false:

if db.HasTable(&Friend{}){
		fmt.Println("该表不存在")
	}

后来查证发现,可以通过手动更改,使用单数名称的表的形式:

//设置单一表
	db.SingularTable(true)
	if !db.HasTable(&Friend{}){
		//当表不存在时,创建表,Set函数是这是表的各种属性
		db.Set("gorm:table_options", "CHARSET=utf8").AutoMigrate(&Friend{})
	}

令人纠结的字符编码

我用的是windows系统、maria db,众所周知是gbk格式,但是golang是utf-8格式,所以插进去的时候是乱码的。所以需要手动改一下数据库的配置文件,以我的数据库为例:在C:\Program Files\MariaDB 10.3\data的my.ini文件增加5、6、8、12,无非就是改变数据库之前的编码格式为utf8,之后重启数据库:
在这里插入图片描述
右键“此电脑”,选择管理,之后再选择服务,然后找到mysql,右键该条目进行重启服务:
在这里插入图片描述
之后重新进入数据库命令行界面,输入status,显示如下:
在这里插入图片描述
然后链接的时候,也指定了utf8,本以为万无一失:
在这里插入图片描述
但结果:
在这里插入图片描述
在命令行中还是乱码,这就很奇怪了,我就试了各种格式,各种改数据库配置文件,还是出错,后来在查看命令行的结构的时候发现了问题:
在这里插入图片描述
命令行是GBK的格式,所以显示UTF-8的内容必然是乱码的,但是你从程序里取数据据就可以了:
在这里插入图片描述
###参考:
不小心都被我关了,找不到参考文献了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值