我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器。
文件处理需要一段时间,进程中途死亡,并出现以下错误:
2006, MySQL server has gone away
我听说过MySQL的设置,wait_timeout,但是我需要在我办公室的服务器或远程MySQL服务器上更改它吗?
我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器。
文件处理需要一段时间,进程中途死亡,并出现以下错误:
2006, MySQL server has gone away
我听说过MySQL的设置,wait_timeout,但是我需要在我办公室的服务器或远程MySQL服务器上更改它吗?
当前回答
对于Vagrant Box,请确保为该Box分配了足够的内存
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
end
其他回答
在我的情况下,它是低值的open_files_limit变量,这阻止了mysqld访问数据文件。
我用:
mysql> SHOW VARIABLES LIKE 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1185 |
+------------------+-------+
1 row in set (0.00 sec)
在我将变量改为大值后,我们的服务器再次活跃起来:
[mysqld]
open_files_limit = 100000
取消my.ini/my.cnf中下面的ligne的注释,这将把你的大文件分割成小部分
# binary logging format - mixed recommended
# binlog_format=mixed
TO
# binary logging format - mixed recommended
binlog_format=mixed
在windows上,那些使用xampp的人应该使用这个路径xampp/mysql/bin/my.ini,并将max_allowed_packet(在部分[mysqld]下)更改为您选择的大小。 如
max_allowed_packet=8M
再次在php.ini(xampp/php/php.ini)中更改upload_max_filesize选项大小。 如
upload_max_filesize=8M
让我头疼了一段时间,直到我发现这个。希望能有所帮助。
检查连接是否存在并在需要时重新建立连接可能更容易。
有关这方面的信息,请参阅PHP:mysqli_ping。
在docker-compose.yml中添加以下设置时,我也遇到了同样的问题:
db:
image: mysql:8.0
command: --wait_timeout=800 --max_allowed_packet=256M --character-set-server=utf8 --collation-server=utf8_general_ci --default-authentication-plugin=mysql_native_password
volumes:
- ./docker/mysql/data:/var/lib/mysql
- ./docker/mysql/dump:/docker-entrypoint-initdb.d
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}