随笔分类 - Gorm
摘要:使用SQL语句来访问存储在数据库表中的记录集合。SQL查询是由像From、Where等各种子查询来构成的。必须执行这些子查询才能获得正确的结果,看下SQL语句中各个子查询执行的先后顺序。 select column1,column2 from table1 as t1 left join table
阅读全文
摘要:1、慎用CreatedAt、UpdatedAt和DeletedAt字段 数据库设计字段时要避开这created_at、updated_at、deleted_at字段,因为被框架本身使用了,建议改为created_time、updated_time和deleted_time。 数据插入时,仅仅插入业务
阅读全文
摘要:使用First,Take,Last 进行单条查找,First根据主键正序,Last 根据主键倒序 Find查询结果是列表,First查询的是单条数据。 Raw 中文:原生的 作用:在写gorm语句时候用来写Raw sql语句(原生sql语句) 在使用Raw自定义SQL查询时,使用Scan来接收数据,
阅读全文
摘要:报错原因:值超出列的范围 可能原因: 原因1:值超出其可输入的范围。 解决方法: 1、把该字段INT类型修改为BIGINT,或者改成其他数据类型。 2、检查是否有符号 有符号数据类型表示该列可以存储正整数和负整数值。这是 MySQL 中大多数整数类型的默认类型。因此,除非明确指定,否则任何整数类型列
阅读全文
摘要:在使用go-sql-driver/msqyl驱动过程中,偶现invalid connection错误,字面上看就是无效连接的意思。 开始以为是数据库压力问题或是网络不好,后来发现服务器和数据库是走内网的,网络出现问题几率非常小;只是在测试服务器上跑,没多少连接,不存在压力问题。 golang数据库驱
阅读全文
摘要:安全模式 在mysql中,如果在update和delete没有加上where条件,数据将会全部修改。不只是初识mysql的开发者会遇到这个问题,有经验的工程师难免也会忘记写入where条件。 为了避免失误造成的数据全部修改和删除,通过配置sql_safe_updates可开启mysql的安全模式。
阅读全文
摘要:为什么需要连接池 每个连接建立时都会申请内存用来做socket buffer 每个连接都要做三次握手四次挥手 每个连接关闭时都要释放内存空间 在高并发场景下,由于没有连接池的最大连接数限制,可以创建无数个连接,耗尽文件描述符 并发高时,会产生大量的连接,影响系统调度,会占用太多系统资源 连接池设计基
阅读全文
摘要:报错原因:实际连接数超过了mysql 允许的最大连接数【默认连接数是151】,访问量过高,MySQL服务器抗不住。 查看当前最大连接数 show variables like '%max_connections%'; 解决办法:1、修改max_connections Windows环境下找到mysq
阅读全文
摘要:在同一台机器上运行两个 MySQL 服务是可行的,但需要注意以下几点: 确保端口号不冲突。每个 MySQL 服务都需要监听一个独立的端口,以便客户端可以连接到正确的服务。 配置文件的区分。每个 MySQL 实例需要有自己独立的配置文件,包括数据存储路径、日志文件路径等信息。 确保资源充足。运行多个
阅读全文
摘要:database/sql 是 Go 语言中一个标准库,用于处理关系型数据库的操作。它是一个轻量级的 SQL 数据库抽象,提供了一些基本的接口,包括连接、查询、事务等。database/sql 使用 SQL 驱动程序的方式连接不同的数据库,让我们可以使用统一的 API,而不用考虑底层数据库驱动的差异性
阅读全文
摘要:1) Update 更新单个字段值,使用结构体 2)Save用于保存所有字段。提示: 相当于根据主键id,更新所有模型字段值。如果记录在数据库中已经存在,Save 方法就会更新该记录。如果不存在,则会插入一条新记录。默认会更新该对象的所有字段,即使没有赋值 db.First(&user) user.
阅读全文
摘要:limit、offset对count的统计的影响 错误示例1:请注意,如下例子中,Count放在了最后面,查询时,count方法也会加上Limit和offset这两个语句: global.DB.Limit(10).Offset(2).Find(&users).Count(&total) 错误示例2:
阅读全文
摘要:场景:查询时报错 err {"error": "sql: Scan error on column index 0, name \"mobile\": converting NULL to string is unsupported"} 总结: 根据项目需要,在数据库查询时,可能需要对查询结果进行封
阅读全文
摘要:column: 指定数据库中的字段名,例如:column:name。type: 指定数据库中的字段类型,例如:type:varchar(255)。size: 指定字段的大小,例如:size:255。primaryKey: 指定该字段为主键,例如:primaryKey。autoIncrement: 指
阅读全文
摘要:优缺点 GORM最直观的感受:程序员只需关系结构体,操作结构体,无需关注如何操作数据库。 优点:提高开发效率 缺点:使用反射牺牲性能,牺牲灵活性 两个版本 github.com/jinzhu/gorm v1.9.16 gorm.io/gorm v1.21.3 Open // jinzhu func
阅读全文
摘要:在GROM使用链式操作过程中,想知道最终执行的SQL是什么,本文讲解三种常见的SQL日志打印方法。 GORM 两个版本 1)jinzhu版(github.com/jinzhu/gorm) 2)IO版(gorm.io/gorm)【重点讲解】 一、全局打印所有的SQL 在gorm.io版本中,我们可以在
阅读全文
摘要:如果在执行SQL查询的时候,出现错误,Gorm 会将错误信息保存到 *gorm.DB 的Error字段,只要检测 Error 字段就可以知道是否存在错误。 1. 错误处理范例 if err := db.Where("name = ?", "tizi365").First(&user).Error;
阅读全文
摘要:1、当只需要执行某个SQL而不需要进行获取返回值时 // 如果其中有变量,则使用?进行占位, sql := "要执行的SQL" // 在Exec方法中在sql 后面可以使用多个参数作为占位的补充 // 例如需要name=?,则写法可以使用util.Db.Exec(sql,"张三").Error er
阅读全文
摘要:想接收前端这样的数据格式:【json数组】 [ { "password": "casso", "mobile": "13456789999", "nick_name": "go", "icon": "地址" }, { "password": "casso", "mobile": "134567899
阅读全文