Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Mysql PDO:一般错误:2006 Mysql服务器已消失_Php_Mysql_Pdo - Fatal编程技术网

PHP Mysql PDO:一般错误:2006 Mysql服务器已消失

PHP Mysql PDO:一般错误:2006 Mysql服务器已消失,php,mysql,pdo,Php,Mysql,Pdo,我目前正在运行一个自定义php脚本,在本地主机上运行时效果良好,但在共享主机上运行时,我收到以下错误: 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:一般错误:2006 MySQL服务器已经消失在。。。。。。205堆栈跟踪: 0。。。。。。。。PDO->prepare'SELECT*FROM o...1{main}抛出。。。。。。。。。。在线205 我已将文件路径替换为 我尝试过的事情: 添加PDO::ATTR_TIMEOUT=>99999999999

我目前正在运行一个自定义php脚本,在本地主机上运行时效果良好,但在共享主机上运行时,我收到以下错误:

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:一般错误:2006

MySQL服务器已经消失在。。。。。。205堆栈跟踪:

0。。。。。。。。PDO->prepare'SELECT*FROM o...1{main}抛出。。。。。。。。。。在线205

我已将文件路径替换为

我尝试过的事情:

添加PDO::ATTR_TIMEOUT=>999999999999999,以延长任何超时

检查了最大允许值我找到的每个答案都说这是原因 我的本地计算机当前设置为1048576 1mb,但我的主机当前设置为268435456 268mb

如果我的本地计算机是268mb,我的主机是1mb,我会理解的,但这并不能说明这是问题的原因,因为事实并非如此

我确实尝试在我的主机上增加它,但作为它的共享,我没有更改此全局变量的权限

还有什么我可以试试的吗

仅供参考,以下是脚本:

//MYSQL PREPARE STATEMENTS
//check to see if a product is in database
$mysql['productcheck'] = $mysql['pdo']->prepare('SELECT * FROM oc_product WHERE sku = ?');
$newproductcount=0;
$x = 0;
while(($maintable[$x]['status']=="active") || ($maintable[$x]['status']=="new") || ($maintable[$x]['status']=="discontinued") || ($maintable[$x]['status']=="archive")) {
    if(($maintable[$x]['status']=="active") || ($maintable[$x]['status']=="new")){
        //check to see if product exsists
        $params[1]=$maintable[$x]['euid'];
        $mysql['productcheck']->execute([$params[1]]);
        if($mysql['productcheck']->rowCount()==0){
            //PRODUCT DOESN'T EXSIST
            echo "Product doesnt exsists!";
            $newproductcount++;
        }
    }
$x++;
}

MySQL服务器出现错误的其他常见原因有:

您或db管理员已使用KILL语句或mysqladmin KILL命令终止正在运行的线程

您试图在关闭与服务器的连接后运行查询。这表示应用程序中存在应更正的逻辑错误

在不同主机上运行的客户端应用程序没有从该主机连接到MySQL服务器所需的权限

客户端的TCP/IP连接超时。如果您一直在使用以下命令,可能会发生这种情况:mysql\u options…,mysql\u OPT\u READ\u TIMEOUT,。。。或者mysql\u选项…,mysql\u选项\u写入\u超时,。。。。在这种情况下,增加超时可能有助于解决问题

您在服务器端遇到超时,客户端中的自动重新连接被禁用。MYSQL结构中的重新连接标志等于0

您正在使用Windows客户端,服务器已断开连接,可能是因为在发出命令之前等待超时已过期

Windows上的问题是,在某些情况下,MySQL在向服务器写入TCP/IP连接时不会从操作系统获取错误,而是在尝试从连接读取答案时获取错误

解决方法是,如果自上次查询以来已有很长时间,则对连接执行mysql ping,这是Connector/ODBC所做的,或者将mysqld服务器上的等待超时设置得很高,以至于实际上从未超时

如果向服务器发送的查询不正确或太大,也会出现这些错误。如果mysqld接收到一个太大或无序的数据包,它会假定客户端出现了问题,并关闭连接。例如,如果需要大查询,如果正在处理大BLOB列,则可以通过设置服务器的max_allowed_packet变量来增加查询限制,该变量的默认值为4MB。您可能还需要增加客户端上的最大数据包大小。关于设置数据包大小的更多信息,请参见第B.5.2.10节“数据包过大”

插入大量行的INSERT或REPLACE语句也可能导致此类错误。这些语句中的任何一个都会向服务器发送一个请求,而与要插入的行数无关;因此,通常可以通过减少每次插入或替换发送的行数来避免错误

如果您发送的数据包大于或等于16MB,如果您的客户端大于4.0.8,而服务器大于或等于4.0.8,那么您也会失去连接

如果主机名查找失败,也可能看到此错误,例如,如果服务器或网络所依赖的DNS服务器关闭。这是因为MySQL依赖于主机系统进行名称解析,但从MySQL的角度看,无法知道它是否正常工作。这个问题与任何其他网络超时都无法区分

如果使用-skip networking选项启动MySQL,您还可能会看到MySQL服务器已消失错误

如果您的防火墙阻止了MySQL端口默认3306,从而阻止了与MySQL服务器的任何连接,则会出现另一个可能导致此错误的网络问题

在分叉子进程的应用程序中也会遇到此错误,所有子进程都试图使用与MySQL服务器相同的连接。这可以通过为每个子进程使用单独的连接来避免

您遇到了一个错误,服务器在执行查询时死机


检查此链接:

相同的问题-在我的例子中,问题是我在关闭与服务器的连接后试图运行查询-I。 默认情况下,e wait_超时或connect_超时已触发30秒。应用程序中存在明显的逻辑错误。