Categories
GO언어 프로그래밍

고언어 SQL 질의 중 sql: Rows are closed 해결하기

고언어에서 SQL 질의는 아래와 같은 코드가 됩니다.


import (
	"database/sql"
	_ "github.com/go-sql-driver/mysql" // For connect External MySQL Server
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

        // ... (중략)...

	q1, _ := fromDB.Query("SELECT * FROM `테이블명`")
	cols, _ := q1.Columns()

	for q1.Next() {
		columnPointers := CreateRecord(len(cols))

		// Scan the result into the column pointers...
		if err := q1.Scan(columnPointers...); err != nil {
			panic(err)
		}

                // ...(중략)...
        }

여기서 아래와 같은 오류가 나는 경우

sql: Rows are closed

이는 이미 Close() 되었거나 Next() 로 모든 레코드를 다 읽어버린 후에 다시 Next() 로 레코드를 또 가져오는 경우 비어 있으므로 이미 사용이 끝난 쿼리 객체를 사용하려고 한다는 의미가 됩니다.

코드를 잘보고 잘못된 쿼리객체를 사용하고 있는지 확인해보는 것이 좋습니다.

패키지 : database/sql, github.com/go-sql-driver/mysql