所以,我的 Ubuntu (18.04) 服务器上有一个奇怪的问题:
我正在运行 PHP (7.2.10) 和 MySQL (8.0.12)。当我尝试从 PHP 页面连接到 MySQL 数据库时,出现错误“MySQL 服务器已消失”。在我进行的每次 搜索中,所有修复都是针对在发送查询时出现该错误的情况。 (我什至还没有说到那一点。)
mysql.err 和 mysql.log 文件为空白或有不相关的警告(无错误)。我增加了我的超时和 max_allowed_packet 无济于事。此外,我可以使用其他程序远程连接到数据库,因此我知道服务器正在响应请求。
我将 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
有两种可能性最大:
默认情况下,如果没有任何反应,服务器会在八小时后关闭连接。您可以在启动 mysqld 时通过设置 wait_timeout 变量来更改时间限制。请参阅第 5.1.7 节,“服务器系统变量”。
如果您有脚本,您只需再次发出查询,客户端就会自动重新连接。这假定您在客户端启用了自动重新连接(这是 mysql 命令行客户端的默认设置)。
希望对你有帮助。
关于php - "MySQL server has gone away"使用 PHP 连接到服务器时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52864672/