来自命令行的 PDO MySQL 连接问题
Posted
技术标签:
【中文标题】来自命令行的 PDO MySQL 连接问题【英文标题】:PDO MySQL Connection Issue from command line 【发布时间】:2014-10-31 00:08:40 【问题描述】:我有一个 php 脚本,我想从 MacOs 上的终端在后台运行。我在连接数据库时遇到问题,但是从浏览器运行完全相同的脚本时没有问题。
脚本如下:
<?php
echo "START";
try
$con = new PDO("mysql:host=localhost;dbname=issues;charset=utf8", "root", "root");
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
catch(PDOException $e)
throw new Exception($e->getMessage());
echo "here"; ?>
我正在使用php script.php
从终端运行它
我得到的 try catch 块的错误是:
开始
致命错误:/Applications/MAMP/htdocs/issueManager3/notifications.php:11 中未捕获异常“异常”,消息“SQLSTATE [HY000] [2002] 没有此类文件或目录” 堆栈跟踪:#0 main 在第 11 行的 /Applications/MAMP/htdocs/issueManager3/notifications.php 中抛出
没有 try catch 块我得到的错误是: 开始 致命错误:/Applications/MAMP/htdocs/issueManager3/notifications.php:6 中的未捕获异常“PDOException”和消息“SQLSTATE [HY000] [2002] 没有此类文件或目录” 堆栈跟踪:#0 /Applications/MAMP/htdocs/issueManager3/notifications.php(6): PDO->__construct('mysql:host=loca...', 'root', 'root')#1 main 在第 6 行的 /Applications/MAMP/htdocs/issueManager3/notifications.php 中抛出
它说没有这样的文件或目录,但它正在回显“START”,所以这绝对不是找不到脚本的情况。从终端执行脚本时,我是否遗漏了需要在连接数据库中添加的内容?
任何帮助表示赞赏。
【问题讨论】:
@jeroen 检查上面的编辑 @jeroen 使用 127.0.0.1 会出现同样的错误 你知道当你从 CRON 运行东西时你通常需要绝对路径吗?如果需要通过 cron 运行,可以轻松使用 apache 的东西需要绝对路径。确保您的 cron 运行可以找到所需的所有文件。查看所有包含和要求 @Hanky웃Panky 使用脚本的绝对路径运行它也不起作用...正如您所见,脚本中没有包含或要求。 你经历过这个吗? ***.com/questions/2412009/… 这个? ***.com/questions/20723803/… 【参考方案1】:试试这个代码:
<?php
echo "START";
try
$con = new PDO("mysql:host=127.0.0.1;dbname=issues;charset=utf8", "root", "root");
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
catch(PDOException $e)
echo $e->getMessage();
echo "here"; ?>
【讨论】:
以上是关于来自命令行的 PDO MySQL 连接问题的主要内容,如果未能解决你的问题,请参考以下文章