mysql - Zend框架2控制台路由mysql错误

标签 mysql routes console zend-framework2

编辑2:我自己修复了它,请参阅评论。

我正在尝试通过终端访问我的 Zf2 应用程序。

这个想法是,cron 脚本将定期调用应用程序,相应的操作将在数据库中查找内容并在需要时进行更新。

通过浏览器访问 Controller /操作时,一切正常。

当通过终端访问它时,我收到了一个与 mysql 相关的错误,我有点迷失了。

警告:PDO::__construct(): [2002] 没有这样的文件或目录(尝试通过 unix:///var/mysql/mysql.sock 连接)

来自终端的命令是:

php index.php 故事更新

这是我的路线:

'console' => array(
    'router' => array(
        'routes' => array(
              'updatestories' => array(
                    'options' => array(
                        'route'    => 'stories update',
                        'defaults' => array(
                            'controller' => 'Application\Controller\Index',
                            'action'     => 'updatestories'
                        )
                    )
                )
        )
    )
),

“updatestories”操作是:

public function updatestoriesAction(){

    $request = $this->getRequest();

    // Make sure that we are running in a console and the user has not tricked our
    // application into running this action from a public web server.
    if (!$request instanceof ConsoleRequest){
        throw new \RuntimeException('You can only use this action from a console!');
    }

    $talents = $this->getStoriesTable()->fetchAll();

    var_dump($talents);

    return "end of script. !\n";
}

这是我仅在通过终端到达它时收到的错误:

Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Connection.php on line 281 ====================================================================== The application has thrown an exception! ====================================================================== Zend\Db\Adapter\Exception\RuntimeException Connect Error: SQLSTATE[HY000] [2002] No such file or directory ---------------------------------------------------------------------- /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Connection.php:289 0 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Pdo.php(244): Zend\Db\Adapter\Driver\Pdo\Connection->connect() 1 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Db/Sql/Sql.php(120): Zend\Db\Adapter\Driver\Pdo\Pdo->createStatement() 2 /Users/gregorychiche/Sites/repos/module/Talents/src/Talents/Model/StoriesTable.php(35): Zend\Db\Sql\Sql->prepareStatementForSqlObject(Object(Zend\Db\Sql\Select)) 3 /Users/gregorychiche/Sites/repos/module/Application/src/Application/Controller/IndexController.php(123): Talents\Model\StoriesTable->fetchAll() 4 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php(83): Application\Controller\IndexController->updatestoriesAction() 5 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent)) 6 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) 7 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 8 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(117): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 9 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php(114): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Console\Request), Object(Zend\Console\Response)) 10 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent)) 11 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) 12 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 13 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(309): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 14 /Users/gregorychiche/sites/repos/public/index.php(24): Zend\Mvc\Application->run() 15 {main} ====================================================================== Previous Exception(s): ====================================================================== exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory' in /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Connection.php:281 Stack trace: 0 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Connection.php(281): PDO->__construct('mysql:dbname=ta...', 'root', 'root', Array) 1 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Pdo.php(244): Zend\Db\Adapter\Driver\Pdo\Connection->connect() 2 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Db/Sql/Sql.php(120): Zend\Db\Adapter\Driver\Pdo\Pdo->createStatement() 3 /Users/gregorychiche/Sites/repos/module/Talents/src/Talents/Model/StoriesTable.php(35): Zend\Db\Sql\Sql->prepareStatementForSqlObject(Object(Zend\Db\Sql\Select)) 4 /Users/gregorychiche/Sites/repos/module/Application/src/Application/Controller/IndexController.php(123): Talents\Model\StoriesTable->fetchAll() 5 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php(83): Application\Controller\IndexController->updatestoriesAction() 6 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent)) 7 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) 8 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 9 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(117): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 10 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php(114): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Console\Request), Object(Zend\Console\Response)) 11 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent)) 12 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) 13 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 14 /Users/gregorychiche/Sites/repos/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(309): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 15 /Users/gregorychiche/sites/repos/public/index.php(24): Zend\Mvc\Application->run()

我错过了什么?我不明白为什么代码在通过浏览器访问时可以工作(如果我删除该代码但显然会引发异常),但在使用终端时却不能。我认为 zf2 正在处理所有依赖性。

提前致谢

编辑1: getStoriesTable() 如下。在浏览器上下文中使用时效果非常好

public function getStoriesTable()
{
    if (!$this->storiesTable) {
        $sm = $this->getServiceLocator();
        $this->storiesTable = $sm->get('Talents\Model\StoriesTable');
    }
    return $this->storiesTable;
}

编辑2:我自己修复了它,请参阅评论。

格雷格

最佳答案

问题是 mysql 无法在本地主机上运行。

在大多数情况下,将 global.php 主机名更改为 127.0.0.1

关于mysql - Zend框架2控制台路由mysql错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18003044/

相关文章:

mysql - 如何使引号看起来像字符串中的引号

mysql - EXISTS 的 SQL 查询没有像我想的那样工作

C# 汉诺塔控制台应用程序。

mysql - Laravel 5 Eloquent - 连接表上的 whereIn

php - 事务回滚功能在 Codeigniter 中不起作用

routes - ASP.NET Core 3.1 区域返回 404

java - 玩!框架表单重定向不起作用

javascript - Node.js 在服务中使用 res 和 req

android - Google Play Developer Console - 无法更新应用程序,说应用程序标题已被包名称使用...我自己的包名称

linux - 如何永久禁用 stty 的 XON/XOFF 设​​置?