无法 运行 语句:查询期间与 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)
将 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)