【发布时间】:2016-04-19 23:19:49
【问题描述】:
我正在尝试使用 PDO 连接到我的数据库,但无法正常工作。我收到 500 服务器错误
MySQL 5.0.83 版
带有消息“SQLSTATE[HY000] [2002] 的“PDOException” php_network_getaddresses:getaddrinfo 失败:节点名或服务名 提供或未知的错误:致命错误:未捕获的异常
我得到的其他错误:
致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE[HY000] [2002] 操作超时'
我显然改变了这个例子中的值。是的,它们是正确的凭据。我可以使用 Sequel Pro 或其他方法连接。
connection.php:
<?php
//Our MySQL user account.
define('MYSQL_USER', 'user');
//Our MySQL password.
define('MYSQL_PASSWORD', 'pass');
//The server that MySQL is located on.
define('MYSQL_HOST', 'host');
//The name of our database.
define('MYSQL_DATABASE', 'database');
/**
* PDO options / configuration details.
* I'm going to set the error mode to "Exceptions".
* I'm also going to turn off emulated prepared statements.
*/
$pdoOptions = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false
);
/**
* Connect to MySQL and instantiate the PDO object.
*/
$pdo = new PDO(
"mysql:host=" . MYSQL_HOST . ";dbname=" . MYSQL_DATABASE, //DSN
MYSQL_USER, //Username
MYSQL_PASSWORD, //Password
$pdoOptions //Options
);
注册.php
<?php
require 'connection.php';
奇怪的是,在这个网站的旧页面上使用了 mysql_connect()。
$db = mysql_connect($hostname, $db_user, $db_password); mysql_select_db($database,$db);
这与完全相同的凭据完美配合。
它托管在共享主机上,并且在服务器上启用了 PDO。 共享主机:黑夜
我试过了:
- 不使用 $pdoOptions
- 不使用define()
- 不使用require并将新的pdo代码直接放入registration.php文件中
- 在答案中运行脚本,现在我的 mysql_connect() 超时,在我的主机上出现白屏。
现在:2016 年 1 月 15 日星期五 08:54:21 +0100 最后更改时间:2016 年 1 月 15 日星期五 08:53:01 +0100 已弃用:mysql_connect():mysql 扩展名是 已弃用并将在将来删除:使用 mysqli 或 PDO 而是在第 14 行的 connection.php 中
警告:mysql_connect(): Operation timed out in connectie.php on line 14 连接失败。操作超时
【问题讨论】:
-
你对你的 mysql_* 和 PDO 代码使用完全相同的定义吗?
-
另一种可能性:主机完全错误,
mysql_connect因同样的原因而失败,但您实际上并没有对此进行检查,并且在调用后续mysql_函数时,它们会执行丑陋的隐式发生在幕后的最佳猜测连接。 -
您发布的 PDO 连接代码正是您实际使用的代码(再次带有 !)?如果有例如'host=' 和主机名之间的空格会出现这样的错误。
http://mysql640int.cp.blacknight.com之类的东西也会出错。 -
这意味着
var_dump( MYSQL_HOST, gethostbyname(MYSQL_HOST)); die;在$pdo = new PDO之前应该显示主机名(仅一次)和该服务器的IP 地址。是吗? -
@VolkerK 是的 string(29) "mysql640int.cp.blacknight.com" string(12) "172.16.4.101"