programing

sql.쿼리가 잘리거나 불완전한 결과

bestcode 2022. 11. 27. 11:33
반응형

sql.쿼리가 잘리거나 불완전한 결과

코드는 다음과 같습니다.

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)

제가 직면한 문제는 SQL 쿼리를 직접 데이터베이스(mariadb)로 실행하면 7150개의 레코드가 반환되지만 프로그램 내의 총 카운트는 5196개의 레코드를 출력한다는 것입니다.또한 DB 연결에 대한 SetConnMaxLifetime 파라미터를 확인하고 240초로 설정했는데 DB와 프로그램 간의 오류나 연결 끊김은 나타나지 않습니다.또한 페이지 번호 부여(각각 5000레코드로 제한)를 시도하여 두 개의 다른 쿼리를 발행하고 첫 번째 쿼리는 5000레코드를 반환하지만 두 번째 쿼리는 196레코드만 반환하려고 합니다.github.com/go-sql-driver/mysql 패키지를 사용하고 있습니다.좋은 생각 있어요?

언급URL : https://stackoverflow.com/questions/68672703/sql-query-truncated-or-incomplete-results

반응형