PHP   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php – SQLSTATE [HY000] [2002]资源暂时不可用 – mysql – innodb和pdo大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的错误日志中获得大量结果,如下面列出的那样.数据库中的所有表都是innodb,就与这些表的任何交互而言,所有表都是带有预处理语句的pdo.

正如我所说,所有错误几乎与下面列出的错误相同,但是对于几个不同的页面会发生.无论页面如何,错误行始终指向我开始新语句的点…例如$stmt = $db-> prepare(“……..语句本身可以很好地处理没有错误,所以我对导致这种情况的原因感到有些困惑.

对于不同的页面,这样的多个错误

示例将错误点设置为 – 在这种情况下为$stmt = $db-> prepare(“具体为行.它始终指向开始新预准备语句的行.

$stmt = $db->prepare("
    SELECT 
        accounts.account_id,computers.computer_id,computers.status,users.user_id
    FROM accounts
    LEFT JOIN computers
        ON computers.account_id = accounts.account_id AND computers.computer_uid = :computer_uid
    LEFT JOIN users
        ON users.computer_id = computers.computer_id AND users.username = :username
    WHERE accounts.account_key = :account_key
");

//bindings
$binding = array(
    'account_key' => $_POST['account_key'],'computer_uid' => $_POST['computer_uid'],'username' => $_POST['username']
);
$stmt->execute($binding);   
//result (can only be one or none)
$result = $stmt->fetch(PDO::FETCH_ASSOC);

连接脚本:

<?PHP

if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');

// db config
$db_host        = 'localhost';
$db_database    = '*******';
$db_user        = '*******';
$db_pass        = '*******';

//db connection
try {
    $db = new PDO("MysqL:host=$db_host;dbname=$db_database;charset=utf8",$db_user,$db_pass,array(PDO::ATTR_EMULATE_PREPARES => false,PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_PERSISTENT => true));
}
catch(PDOException $e) {
    error_log("Failed to connect to database: ".$e->getMessage());
}

?>

我想到的事情:

>这个特殊的脚本运行很多…有时可以在一秒钟内多次调用它.
>在这个网站上,我对所有准备好的语句使用相同的格式… $stmt = … $result或$results = …我没有关闭光标,但是,从我的研究中不需要它作为驱动程序是MysqL,它是自动完成的.
>我在连接设置中将PDO :: ATTR_PERSISTENT设置为true – 这会对此错误产生影响吗?

所有这些错误在这里发生了什么?任何人?

编辑 – 更多信息:

>我已将localhost明确更改为127.0.0.1
>我已关闭持久连接/ false

由于执行上述操作,错误已更改为sqlSTATE [HY000] [2002] Connection超时.这实际上是一个人/ comp连接到’我’的问题,或者实际上是我的服务器/数据库的问题?

编辑2:

我使用$_SERVER [‘DOCUMENT_ROOT’]是否可能导致问题?由于此文件经常被“命中”,因此通常也需要连接脚本,如下所示.我需要在每个页面上按如下所示连接脚本:

我将在这主题上指出@MrGomez topic,这主要是简明但描述你所说的错误.这不是PDO相关的问题,而是MysqL特定的.

获取“资源暂时不可用”的原因

>耗尽MysqL可用内存
>在当前用户下用完MysqL文件描述符
>遇到活锁或死锁
>在上游代理上耗尽资源
>耗尽的PID可用于分叉

但是,您的日志应该有更多的东西让您知道发生了什么.就像确定任何文件是否有任何锁定一样.

大佬总结

以上是大佬教程为你收集整理的php – SQLSTATE [HY000] [2002]资源暂时不可用 – mysql – innodb和pdo全部内容,希望文章能够帮你解决php – SQLSTATE [HY000] [2002]资源暂时不可用 – mysql – innodb和pdo所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: