【发布时间】:2017-04-29 05:14:21
【问题描述】:
我目前正在运行一个自定义 php 脚本,该脚本在我的本地主机上运行时工作正常,但是在共享主机上运行时,我收到以下错误:
致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY000]:一般错误:2006
MySQL server has away' in ...... 205 堆栈跟踪:
0 ........ PDO->prepare('SELECT * FROM o...') #1 {main} throw in .......... 第 205 行
(我已将文件路径替换为.......)
我尝试过的事情:
-
添加
PDO::ATTR_TIMEOUT => "999999999999999999999",以延长任何超时时间。 -
检查了
max_allowed_packet(我找到的每个答案都说这是原因) 我的本地计算机当前设置为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++;
}
【问题讨论】: