php:SQLSTATE [HY000] [2002]无法建立连接,因为目标计算机主动拒绝它

时间:2014-09-01 16:00:19

标签: php mysql apache

我使用php创建了注册表和登录表单。我从谷歌那里获取了消息来源。

所以我在运行index.php。

时添加了所有相应的代码

显示,

SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.

我尝试使用stackoverflow和google修复此问题,仍然无法纠正。

我正在使用xampp。在xampp控制面板中,apache和mysql模块正在运行。和apache端口 80,443 ,mysql端口 3306

我可以知道,还有其他错误吗?..

有人能帮助我吗?任何帮助将不胜感激。

提前致谢。

这是我的config.php:

<?php
ob_start();
session_start();

//set timezone
date_default_timezone_set('Europe/London');

//database credentials
define('DBHOST','localhost');
define('DBUSER','root');
define('DBPASS','');
define('DBNAME','register');

//application address
define('DIR','http://domain.com/');
define('SITEEMAIL','noreply@domain.com');

try {

    //create PDO connection 
    $db = new PDO("mysql:host=".DBHOST.";port=8889;dbname=".DBNAME, DBUSER, DBPASS);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {
    //show error
    echo '<p class="bg-danger">'.$e->getMessage().'</p>';
    exit;
}

//include the user class, pass in the database connection
include('classes/user.php');
$user = new User($db); 
?>

6 个答案:

答案 0 :(得分:3)

你没说你的mysql端口是3306:

$db = new PDO("mysql:host=".DBHOST.";port=8889
//------------------------------------------^

这可能会有所帮助:

$db = new PDO("mysql:host=".DBHOST.";port=3306

答案 1 :(得分:0)

$ db = new PDO(“mysql:host =”。DBHOST。“; port = 3306 ; dbname =”。DBNAME,DBUSER,DBPASS);

您应该将端口号更改为默认值:3306!希望这有帮助

答案 2 :(得分:0)

萨西, 如果您在本地服务器上运行它可能是您的Windows设置,则需要配置本地服务器以发送电子邮件。

Here您可以找到如何配置XAMPP以从localhost发送邮件。

很抱歉,我在这里回答你,但我没有足够的声誉发表评论:D

答案 3 :(得分:0)

当某些其他应用程序(如Skype和IIS)使用Apache端口(即80和mysql服务器,即3306)时,通常会发生此错误

您可以通过eighter卸载这些应用程序或将localhost的端口号更改为其他内容并在settings.php中进行正确的更改

答案 4 :(得分:0)

我也遇到了这个错误。 我做了以下事情: 1.找出mysql使用的端口号。在phpmyadmin中,我运行了以下sql:

show variables;

它显示了mysql的变量列表。向下滚动,你会找到端口号。

  1. 我编辑了这样的PHP代码:
  2.   

    $ dsn ='mysql:host = 127.0.0.1; port = 3307; DBNAME = learnphpfast';

    它就像一个魅力!

答案 5 :(得分:0)

对于Drupal用户 -

这通常是因为将服务器与mysql通信的max_execution时间。将最大执行时间从60秒增加到您想要的上限,然后再次尝试刷新页面。

它对我有用。