#### 背景

在一次使用 gorm 做数据迁移时,遇到了每次脚本运行一会儿就报错显示连接数超了 

#### 排查步骤

1. 查看数据库设置的最大连接数是多少

![7a7f1169ba07ede487d74a68429a9ceb.png](evernotecid://9C54604C-AD06-469D-A339-9124203AC666/appyinxiangcom/40392502/ENResource/p69)

连接数设置的是 6512 基本可以排除数据库设置问题

2. 查看脚本中是否配置了连接池

脚本设置的连接池大小为 100,因此也不是脚本连接池的原因

3. 检查是否有连接未释放

导致连接未释放通常是以下 2 个原因:

a. 事务未关闭

**注意: 关闭事务时, <u>*必须将开始的事务保存到变量(tx)中,*</u> 后续也必须使用 tx 来提交或回滚事务, *<u>不可直接使用 conn 来提交事务</u>*, 以下是错误示例:**

我遇到的问题就是事务使用方式错误导致的

b. 使用了 rows 方法,未手动 close


[参考文档](https://wenku.baidu.com/view/4d46901240323968011ca300a6c30c225901f082.html)