programing

RMySQL에서 결과 집합을 닫는 방법은?

javamemo 2023. 9. 17. 12:03
반응형

RMySQL에서 결과 집합을 닫는 방법은?

가져오기 데이터베이스에 RMySQL을 사용했는데 연결을 닫으려고 하면 다음 오류가 나타납니다.

Error in mysqlCloseConnection(conn, ...) : 
  connection has pending rows (close open results set first)

컴퓨터를 다시 시작하는 것 말고는 이 문제를 해결할 방법이 없는데 해결할 수 있는 방법이 있을까요?감사합니다!

dbClearResult 방법을 사용할 수 있습니다.
예:

dbClearResult(dbListResults(conn)[[1]])

멀티플렉서가 지적한 것처럼 결과 집합의 일부를 뒤로 하고 잘못한 것일 수 있습니다.

DBI 및 RMySQL과 같은 액세스자 패키지는 때때로 약간 어려운 문서를 가지고 있습니다.사용할 것을 상기시키려고 노력합니다.dbGetQuery()한 번에 전체 결과를 파악할 수 있습니다.다음은 CRANberies 코드의 짧은 일부분입니다.

sql <- paste("select count(*) from packages ",
             "where package='", curPkg, "' ",
             "and version='", curVer, "';", sep="")
nb <- dbGetQuery(dbcon, sql)

이후에는 걱정 없이 문을 닫을 수 있습니다(또는 다른 작업도 할 수 있습니다.

이전 답변에서 설명했듯이 RMysql이 쿼리 결과를 모두 반환하지 않았기 때문에 이 오류가 발생합니다.
다음을 사용하여 500 이상의 결과를 얻을 때 이 문제가 발생했습니다.

my_result <- fetch( dbSendQuery(con, query))

페치에 대한 설명서를 살펴보니 검색된 레코드의 수를 지정할 수 있습니다.

n = 페치당 검색할 최대 레코드 수입니다.보류 중인 모든 레코드를 검색하려면 n = -1 또는 n = Inf를 사용합니다.

솔루션:

1 - 레코드 수를 무한대로 설정합니다.my_result <- fetch( dbSendQuery(con, query), n=Inf)

2- dbGetQuery 사용:my_result <- dbGetQuery(con, query)

rs<- dbGetQuery(dbcon, sql)
data<-dbFetch(rs)
dbClearResult(rs)

쿼리를 계속할 때 마지막 줄에서 다음 오류를 제거했습니다.

Error in .local(conn, statement, ...) : 
  connection with pending rows, close resultSet before continuing

연결을 닫기 전에 결과 세트를 닫아야 합니다.보류 중인 행이 있는 결과 세트를 닫기 전에 연결을 닫으려고 하면 기계가 중단되는 경우가 있습니다.

rmysql에 대해서는 잘 모르지만 먼저 결과 세트를 닫도록 노력합니다.

당신은 스스로 정한 결과에 대해 기억해야 합니다.아래 예제에서는 결과를 닫고 지우는 방법과 영향을 받는 행을 가져오는 방법을 볼 수 있습니다.문제를 해결하려면 보낸 문장이나 쿼리의 결과를 가져오는 변수의 마지막 줄 코드를 사용합니다.:)

statementRes <- DBI::dbSendStatement(conn = db,
                     "CREATE TABLE IF NOT EXISTS great_dupa_test (
                        taxonomy_id INTERGER NOT NULL,
                        scientific_name TEXT);")
DBI::dbGetRowsAffected(statementRes)
DBI::dbClearResult(statementRes)

R에서 이걸 썼을 때.저한테는 통했어요!

dbConnect() 명령만 실행하면 됩니다.방금 DB를 다시 연결했습니다.

언급URL : https://stackoverflow.com/questions/4084028/how-to-close-resultset-in-rmysql

반응형