来自命令行的 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 连接问题的主要内容,如果未能解决你的问题,请参考以下文章

PDO 不返回任何结果,而 MySQL 命令行返回预期结果

MySQL数据库之------DOS命令行的基本操作

来自命令行的 ms 语音

来自命令行的 xfail pytest 测试

来自命令行的 xcodebuild - 权利问题 -SecItemCopyMatching:缺少权利

来自命令行的 xcodebuild:文件的编译标志