source

문을 실행할 수 없습니다. 쿼리 중 MySQL 서버에 대한 연결이 끊어졌습니다.

factcode 2022. 9. 4. 14:54
반응형

문을 실행할 수 없습니다. 쿼리 중 MySQL 서버에 대한 연결이 끊어졌습니다.

R 데이터 프레임을 MySQL(MariaDB) 데이터베이스 테이블로 전송하면 다음 오류가 발생합니다.Lost connection to MySQL server during query

이 명령을 사용하여 R에 예제 데이터를 로드할 수 있습니다.

cntxt <- read.delim("http://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?sort=1&file=comext%2FCOMEXT_METADATA%2FCLASSIFICATIONS_AND_RELATIONS%2FENGLISH%2FCN.txt", header = FALSE, quote = "", stringsAsFactors = FALSE)

사용하다RMySQL패키지를 사용하여 데이터 프레임을 데이터베이스로 전송합니다.

con <-  RMySQL::dbConnect(RMySQL::MySQL(), dbname = "test")    
RMySQL::dbWriteTable(con, "cntxt", cntxt, row.names = FALSE, overwrite = TRUE)

모든 크기의 테이블에 대해 노트북에서 데이터베이스 쓰기 작업이 제대로 작동합니다.그러나 서버에서는 오류가 반환됩니다.이 에러는, 충분히 큰 테이블(1000 행 이상)에 대해서만 표시됩니다.

dbWriteTable()1000 행의 데이터에 대해서 성공합니다.

RMySQL::dbWriteTable(con, "cntxt", head(cntxt,1000), row.names = FALSE, overwrite = TRUE)
# [1] TRUE

dbWriteTable()2000 행의 데이터에서는 실패한다.

RMySQL::dbWriteTable(con, "cntxt", head(cntxt,2000), row.names = FALSE, overwrite = TRUE)
# Error in .local(conn, statement, ...) : 
#  could not run statement: Lost connection to MySQL server during query

관련된 질문을 바탕으로 max_allowed_packet 값을 확인했습니다.

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
| max_allowed_packet | 16777216 |

16Mb는 2000줄의 데이터를 저장할 수 있는 용량보다 커야 합니다.에러는 어디에서 발생합니까?mysql 오류 로그에 아무것도 표시되지 않습니다./var/log/mysql/error.log.

서버 버전: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

RMySQL 패키지를 최신 RMariaDB 패키지로 교체합니다.

install.packages("RMariaDB")

그러면 2000 행이 넘는 테이블을 다시 전송할 수 있습니다.

con <- RMariaDB::dbConnect(RMariaDB::MariaDB(), dbname="test")
cntxt <- read.delim("http://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?sort=1&file=comext%2FCOMEXT_METADATA%2FCLASSIFICATIONS_AND_RELATIONS%2FENGLISH%2FCN.txt", header = FALSE, quote = "", stringsAsFactors = FALSE)
RMariaDB::dbWriteTable(con, "cntxt", cntxt, row.names = FALSE, overwrite = TRUE)

언급URL : https://stackoverflow.com/questions/50567726/could-not-run-statement-lost-connection-to-mysql-server-during-query

반응형