mysql - sql.Query 被截断或不完整的结果
问题描述
我有以下代码:
const qInstances = `
SELECT
i.uuid,
i.host,
i.hostname
FROM
db.instances AS i
WHERE
i.deleted_at IS NULL
GROUP BY i.uuid;
`
...
instancesMap := make(map[string]*models.InstanceModel)
instances := []models.Instance{}
instancesCount := 0
instancesRow, err := db.Query(qInstances)
if err != nil {
panic(err.Error())
}
defer instancesRow.Close()
for instancesRow.Next() {
i := models.Instance{}
err = instancesRow.Scan(&i.UUID, &i.Host, &i.Hostname)
if err != nil {
log.Printf("[Error] - While Scanning Instances Rows, error msg: %s\n", err)
panic(err.Error())
} else {
if i.UUID.String != "" {
instancesCount++
}
if _, ok := instancesMap[i.UUID.String]; !ok {
instancesMap[i.UUID.String] = &models.InstanceModel{}
inst := instancesMap[i.UUID.String]
inst.UUID = i.UUID.String
inst.Host = i.Host.String
inst.Hostname = i.Hostname.String
} else {
inst := instancesMap[i.UUID.String]
inst.UUID = i.UUID.String
inst.Host = i.Host.String
inst.Hostname = i.Hostname.String
}
instances = append(instances, i)
}
}
log.Printf("[Instances] - Total Count: %d\n", instancesCount)
我面临的问题是,如果直接对数据库(mariadb)运行 SQL 查询,它将返回 7150 条记录,但程序内的总计数输出 5196 条记录。我还检查了 db 连接的 SetConnMaxLifetime 参数并将其设置为 240 秒,它没有显示任何错误或 db 和程序之间的连接中断。此外,我尝试进行一些分页(每个限制为 5000 条记录)并发出两个不同的查询,第一个返回 5000 条记录,但第二个只有 196 条记录。我正在使用“github.com/go-sql-driver/mysql”包。有任何想法吗?
解决方案
推荐阅读
- r - 有没有更优雅的方式在 R Shiny 中动态创建变量?
- java - 登录 Unix 位置
- angular - Angular http post请求失败
- java - 读取和写入txt文件
- excel - Soundcloud 歌曲名称
- python - GCP 中的 PySpark 内核 - Unicode 字符串
- file-io - 从 emscripten 读取大型用户提供的文件,一次读取一个块
- linux - 在 ambari 集群中使用不同操作系统版本时如何禁用脚本 os_check_type.py
- c# - 在 Xamarin 表单中选择多个多边形(Android 和 iOS)
- javascript - 电子表格无法运行脚本