mysql 2002 pdo_php – SQLSTATE [HY000] [2002]资源暂时不可用 – mysql – innodb和pdo

博客内容讲述了作者遇到的MySQL PDO连接错误,错误代码为[HY000] [2002],表明资源暂时不可用。作者在不同的页面上都遇到这个问题,错误总是指向预处理语句的开始位置。文章讨论了可能的原因,包括持久连接设置、脚本运行频率、以及$_SERVER['DOCUMENT_ROOT']的使用,并提供了数据库连接脚本和错误日志信息。在后续编辑中,作者尝试了更改localhost为127.0.0.1和关闭持久连接,但错误变为'Connection超时'。
摘要由CSDN通过智能技术生成

在我的错误日志中获得大量结果,如下面列出的那样.数据库中的所有表都是innodb,就与这些表的任何交互而言,所有表都是带有预处理语句的pdo.

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

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

[25-Sep-2014 10:19:09 America/Chicago] Failed to connect to database:

SQLSTATE[HY000] [2002] Resource temporarily unavailable [25-Sep-2014

10:19:09 America/Chicago] PHP Fatal error: Call to a member function

prepare() on a non-object in /home/test/public_html/add_log.php on

line 28

示例将错误点设置为 – 在这种情况下为$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);

连接脚本:

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’]是否可能导致问题?由于此文件经常被“命中”,因此通常也需要连接脚本,如下所示.我需要在每个页面上按如下所示连接脚本:

require $_SERVER[‘DOCUMENT_ROOT’].’/custom/functions/connect.php’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值