当前位置: 首页 > 知识库问答 >
问题:

无法运行语句:查询期间与MySQL server的连接丢失

张献
2023-03-14

将R数据帧传输到MySQL(MariaDB)数据库表,我收到以下错误:在查询期间与MySQL服务器失去连接

示例数据可以用此命令加载到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 行)显示:

db写表() 成功用于 1000 行数据

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

db写表 () 对于 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 dec9u1 Debian 9.1

共有1个答案

李和昶
2023-03-14

用更新的RMariaDB包替换RMySQL包

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)
 类似资料:
  • 问题内容: 我收到 错误代码:2013。 当我尝试使用MySQL Workbench向表中添加索引时, 在查询 错误 期间失去了与MySQL服务器的连接 。我还注意到,只要我运行长时间查询,它就会出现。 是否有增加超时值的方法? 问题答案: 新版本的MySQL WorkBench具有更改特定超时的选项。 对我来说,它位于编辑→首选项→SQL编辑器→DBMS连接读取超时(以秒为单位):600 将值更

  • 本文向大家介绍详解MySQL中的分组查询与连接查询语句,包括了详解MySQL中的分组查询与连接查询语句的使用技巧和注意事项,需要的朋友参考一下 分组查询 group by group by 属性名 [having 条件表达式][ with rollup] “属性名 ”指按照该字段值进行分组;“having 条件表达式 ”用来限制分组后的显示,满足条件的结果将被显示;with rollup 将会在所

  • 当我运行大型查询(返回许多行的查询)时,我会得到期间失去与MySQL server的连接的错误,而且我看不出我做错了什么。我使用来自mysql.com的“新”mysql驱动程序(而不是“旧”的MySQLdb),以及与mamp捆绑在一起的mysql版本。Python 2.7。表未损坏,返回状态OK。下面是一个中断的例子: 这导致了我大部分时间得到的错误: 第20行是 PS:我暂时放弃了这一点,改为P

  • 本文向大家介绍Mysql join连接查询的语法与示例,包括了Mysql join连接查询的语法与示例的使用技巧和注意事项,需要的朋友参考一下 连接查询: 是将两个查询(或表)的每一行,以“两两横同对接”的方式,所得到的所有行的结果,即一个表中的某行,跟另一个表中的某行。进行“横向对接”,得到一个新行。 连接查询包括以下这些不同形式,连接方式: 交叉连接、内连接、外连接(分:左外连接,右外连接)

  • 我怎样才能让我的查询在查询时不丢失连接?

  • 问题内容: 我有一个oc_category_description表,其中的列是: category_id 姓名 和其他表oc_category,其中的列是: category_id 图像 parent_id 这是oc_category_description表的示例图片 oc_category表 在这里,我想显示名称,category_id,图像,parent_id,其中oc_category