php - "MySQL server has gone away"使用 PHP 连接到服务器时

标签 php mysql ubuntu

所以,我的 Ubuntu (18.04) 服务器上有一个奇怪的问题:

我正在运行 PHP (7.2.10) 和 MySQL (8.0.12)。当我尝试从 PHP 页面连接到 MySQL 数据库时,出现错误“MySQL 服务器已消失”。在我进行的每次 搜索中,所有修复都是针对在发送查询时出现该错误的情况。 (我什至还没有说到那一点。)

mysql.err 和 mysql.log 文件为空白或有不相关的警告(无错误)。我增加了我的超时和 max_allowed_pa​​cket 无济于事。此外,我可以使用其他程序远程连接到数据库,因此我知道服务器正在响应请求。

我将 MySQL 设置为允许来自 [User]@% 的连接(我知道,这是个坏主意;一旦我解决了这个问题,我会把它改回来。)

我正在使用可用于远程访问数据库的同一个用户。

有什么想法吗?

脚本的相关部分(不过,在这一点上,我 >90% 确定问题不在于脚本本身)

<?php

$conn = new mysqli($servername, $user, $password, $DB, $port);

if ($conn->connect_error)//Test connection
{ //On fail, send an alert and populate manually
  echo "<script>alert('Connection failed: $conn->connect_error! $conn->host_info');</script>\n";/*populate manually*/
}
else //run query; it never gets here.
?>

最佳答案

我想您可以先阅读此页面。

https://dev.mysql.com/doc/refman/8.0/en/gone-away.html

有两种可能性最大:

  1. 默认情况下,如果没有任何反应,服务器会在八小时后关闭连接。您可以在启动 mysqld 时通过设置 wait_timeout 变量来更改时间限制。请参阅第 5.1.7 节,“服务器系统变量”。

  2. 如果您有脚本,您只需再次发出查询,客户端就会自动重新连接。这假定您在客户端启用了自动重新连接(这是 mysql 命令行客户端的默认设置)。

希望对你有帮助。

关于php - "MySQL server has gone away"使用 PHP 连接到服务器时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52864672/

相关文章:

php - 请求准备文件并返回路径,准备好后允许用户下载

php - MySQL/PHP - 用于从数据库中删除多行的复选框数组

javascript - 如何使用 jquery/ajax 运行简单的 php 代码?

mysql - 如何从表中的某一列中选择具有相同但随机值的行,而无需仅使用一个查询知道该值?

php - $_GET 变量在分页代码中未定义

laravel - 如何编辑由 Laradock 工作区生成的文件

php - 图像上传到数据库中未保存在目录中

php - 使用 PHP 将图像上传到 FTP

java - ffmpeg 获取屏幕截图

linux - Bash/Shell 脚本中的安全输入验证