我正在进行批量插入并获得错误 Mysql2::Error: Lost connection to MySQL server during query:
我在互联网上搜索了这个错误,并且大多数博客/文章都要求增加net_read_timeout
价值.
我在互联网上搜索net_read_timeout
但没有得到任何文章/博客用易于理解的语言描述它.在mysql网站上net_read_timeout被描述为"The number of seconds to wait for more data from a connection before aborting the read"
.我对这个陈述完全感到困惑而没有得到它.
我也想了解net_write_timeout和wait_timeout变量.
谢谢,
MySQL为各个阶段使用不同的超时变量.
建立连接时使用 connection_timeout
当它等待它使用的下一个查询时 wait_timeout
当它在使用net_read_timeout
和的特定时间内没有收到查询时net_write_timeout
等等...
通常net_read_timeout
不应该是一个问题,但是当你遇到网络问题时,特别是在与服务器通信时,可能会引发此超时,因为您发送到数据库时,MySQL不等待查询的单个数据包,而是等待整个查询到被读取,但由于网络问题,它不会收到其余的查询.在完全获取查询结果之前,MySQL不允许客户端与服务器通信.
你不能正确地改变那两个变量,毕竟它们是会话变量.
您也可以阅读MySQL Doc
net_read_timeout
:
在中止读取之前等待来自连接的更多数据的秒数.当服务器从客户端读取时,net_read_timeout是控制何时中止的超时值.当服务器写入客户端时,net_write_timeout是控制何时中止的超时值.另请参见slave_net_timeout.
net_write_timeout
:
在中止写入之前等待块写入连接的秒数.另请参见net_read_timeout.
您可以使用查看MySQL本身的默认变量
> mysql show variables like '%timeout';