对MySQL执行长查询时,出现以下错误:
java.lang.RuntimeException: database error (INSERT INTO ... SELECT ....):
Communications link failure
Last packet sent to the server was 8675964 ms ago.
所以这个"最后一个包"发送时间 2.4小时,这也与我的程序的日志文件一致,该日志文件在启动语句时以及发生错误时都会记录。
我认为它可能与https://stackoverflow.com/a/24724721/220627有关但是答案是针对Linux的,使用/proc
并且在Mac上没有任何等价物(据我所知)?
我很熟悉如果您不发送任何语句到开放的MySQL连接(例如,应用程序保持连接打开,在夜间没有请求)。但是,我不相信这是这里的情况。据我了解,在执行语句期间,无论语句运行多长时间,MySQL都会保持连接打开。
来自MySQL:
mysql> show variables like '%timeout%';
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
....
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 60 |
| wait_timeout | 28800 |
+-----------------------------+----------+
据我所知,interactive_timeout
和wait_timeout
是28800, 8小时,所以不到2.4小时后我的声明正在中止,所以我不认为这些变量的价值。
我正在运行MySQL Server version: 5.7.22 Homebrew
。我使用的是Mac OS X 10.13.4。我正在使用mysql-connector-java-5.1.7-bin.jar