无法 运行 语句:查询期间与 MySQL 服务器失去连接

Could not run statement: Lost connection to MySQL server during query

将 R 数据帧传输到 MySQL (MariaDB) 数据库 table,我收到以下错误: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)

数据库写入操作在我的笔记本电脑上工作正常 tables 任何大小。但是在服务器上它 returns 一个错误。该错误仅在 tables 足够大(超过 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

基于related questions,我检查了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 package with the newer RMariaDB package

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)