mysql:mysql的wait_timeout,net_read_timeout和net_write_timeout变量是什么?

use*_*074 11 mysql

我正在进行批量插入并获得错误 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变量.

谢谢,

Cla*_*tta 15

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';