【发布时间】:2017-04-20 10:20:15
【问题描述】:
我收到这个错误
PHP 致命错误:未捕获的 PDOException: SQLSTATE[HY000] [2002] 无法解析 [myPath]/xxDb.php:32 中的地址“localhost:3306:3306”
注意地址中的“双”端口:localhost:3306:3306
xxDb.php line32 看起来像这样:
$db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PW, array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ));
转储 DB_HOST 导致localhost:3306。
我看不到第二个端口部分3306 来自哪里,这在连接初始化期间显然存在。
非常感谢任何帮助。
【问题讨论】:
-
在没有评论的情况下对问题投反对票……太好了。 SO规则...
-
拒绝投票不需要发表评论,只是建议(也不是我)。
DB_HOST是手动设置的吗?如果是,则尝试从中删除端口,将其更改为localhost -
DB_HOST 由CMS系统设置,根据用户的设置而变化(此代码属于插件的一部分)。你能想到这个端口被复制的任何原因吗?任何地方都没有单独的端口设置,而且 PDO 构造函数似乎只是将它加倍(我不太相信..)。我迷路了。
-
这是什么 CMS/平台?这也是在什么服务器环境上运行的?
-
我知道
DB_HOST是由CMS 设置的,但可能需要将端口指定为自己的值。喜欢host=x;port=x;。见PDO_MYSQL DSN。我相信 3306 是默认端口,所以也许你可以完全省略它。