SQLSTATE [HY000] [2002]操作超时

时间:2017-04-14 07:24:47

标签: php mysql pdo

我正在创建一个pdo数据连接。连接在localhost上正常工作。 但是,当我连接到我的远程数据库,并使用我之前使用的完全相同的凭据时,我得到一个空页面,没有错误消息,只是一个空页面。

使用mysqli完成了之前项目的相同凭据,这个凭据是用pdo完成的。

我尝试过两种类型的pdo连接代码,但都没有。

第一个:

$databaseHost = 'x.xxx.xxx.xx';
$databaseName = 'xxxxxxxxx';
$databaseUsername = 'xxxxxxx';
$databasePassword = 'xxxxxx';
$charset = 'utf8';

try {

    $dsn = "mysql:host=$databaseHost;dbname=$databaseName;charset=$charset";


} catch(PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

$opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
        ];

$pdo = new PDO($dsn, $databaseUsername, $databasePassword, $opt);

第二个:

$databaseHost = 'x.xxx.xxx.xx';
$databaseName = 'xxxxxxxxx';
$databaseUsername = 'xxxxxxx';
$databasePassword = 'xxxxxx';

$opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
        ];

try {

    $pdo = new PDO("mysql:host={$databaseHost};dbname={$databaseName}", $databaseUsername, $databasePassword, $opt);

    } catch(PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
  }

即使两个连接都在localhost中工作,我试图在浏览器中本地加载此连接页面,第一个选项给了我这个错误:

  

致命错误:未捕获PDOException:SQLSTATE [HY000] [2002]操作   在/Applications/MAMP/htdocs/ijdb_pdo/config.php:24堆栈中超时   跟踪:#0 /Applications/MAMP/htdocs/ijdb_pdo/config.php(24):   PDO-> __ construct('mysql:host = 83.1 ...','u1164707_sohail','sohail123',   数组)#1 {main}引入   第24行/Applications/MAMP/htdocs/ijdb_pdo/config.php

并且第二个选项给了我以下错误:

  

againtestConnection失败:SQLSTATE [HY000] [2002]操作超时

我在代码中弄乱了什么?

然后我尝试通过终端连接:

MacBook-Pro-3:/ sohail$ /Applications/MAMP/Library/bin/mysql -h "xx.xxx.xxx.xx" -u "xxxxxx" "-pxxxxxxx" "xxxxxxx";

并收到以下错误:

  

警告:在命令行界面上使用密码即可   不安全的。 ERROR 2003(HY000):无法连接到MySQL服务器   'xx.xxx.xxx.xx'(60)MacBook-Pro-3:/ sohail $

我认为我的远程计算机上没有终端访问权限,因此我不能像“PORT”那样显示全局变量。 CMD -Thanks

1 个答案:

答案 0 :(得分:0)

关于你的第二个错误,参考这两个答案。

PDOException SQLSTATE[HY000] [2002] Connection timed out on my local computer

'PDOExcpetion' with message 'SQLSTATE[HY000] [2002] No route to host

您需要启用对远程数据库的访问,否则您的网络IP问题会不时发生变化。请验证这两件事。我希望这会对你有所帮助。