在ZF2

时间:2015-06-18 12:57:09

标签: php doctrine-orm zend-framework2 zend-server

我在尝试使用doctrine CLI时遇到了未被捕获的PDO异常。我正在关注marco's tutorial

我的配置是: ZF 2.5.1,PHP版本5.5.21

Zend Server 8.0.2

遇到异常:

  

致命错误:未捕获的异常' PDOException' with message' SQLSTATE [HY000] [2002]没有这样的文件或目录'在/usr/local/zend/apache2/htdocs/website-/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43   堆栈跟踪:   0. /usr/local/zend/apache2/htdocs/website-/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(43):PDO-> __ construct(' mysql:host = loca ...',' root','',Array)   1. /usr/local/zend/apache2/htdocs/website-/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php(45):Doctrine \ DBAL \ Driver \ PDOConnection-> __ construct (' mysql:host = loca ...',' root','',Array)   2. /usr/local/zend/apache2/htdocs/website-/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(360):Doctrine \ DBAL \ Driver \ PDOMySql \ Driver-> connect(Array ,' root','',数组)   3. /usr/local/zend/apache2/htdocs/website-/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429):Doctrine \ DBAL \ Connection-> connect()   4. / usr / local / zend / apache2 / htdocs / website- / vendor / doctrine / dba /usr/local/zend/apache2/htdocs/website-/vendor/zendframework/zend-servicemanager/src/ServiceManager.php on第946行

有人可以帮忙或给我任何建议吗?

其他信息:

  1. 用于访问Doctrine CLI的命令:

    ./vendor/bin/doctrine-module orm:validate-schema

  2. / vendor / bin /的内容:

  3.   

    ABHI工作人员57B Jun 6 00:47 classmap_generator.php - > ../zendframework/zendframework/bin/classmap_generator.php    ABHI工作人员28B Jun 16 19:46主义 - > ../doctrine/orm/bin/doctrine    ABHI员工34B Jun 16 19:46 doctrine-dbal - > ../doctrine/dbal/bin/doctrine-dbal    ABHI工作人员47B Jun 16 19:46 doctrine-module - > ../doctrine/doctrine-module/bin/doctrine-module    ABHI员工32B Jun 16 19:46 doctrine.php - > ../doctrine/orm/bin/doctrine.php    root staff 26B Jun 16 20:26 phpunit - > ../phpunit/phpunit/phpunit    ABHI工作人员58B Jun 6 00:47 pluginmap_generator.php - > ../zendframework/zendframework/bin/pluginmap_generator.php    ABHI员工60B 6月6日00:47 templatemap_generator.php - > ../zendframework/zendframework/bin/templatemap_generator.php    ABHI staff 30B Jun 16 19:52 zf.php - > ../ zendframework / zftool / zf.php

    1. 来自doctrine-module文件的片段:

      /* @var $cli \Symfony\Component\Console\Application */
      $cli = $application->getServiceManager()->get('doctrine.cli');
      exit($cli->run());
      
    2. PDOConnection.php文件中以下函数中的抛出错误:

      public function __construct($dsn, $user = null, $password = null, array $options = null)
      {
          try {
              parent::__construct($dsn, $user, $password, $options);
              $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('Doctrine\DBAL\Driver\PDOStatement', array()));
              $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          } catch (\PDOException $exception) {
              throw new PDOException($exception);
          }
      }
      

1 个答案:

答案 0 :(得分:4)

我知道现在已经有一段时间了,因为这个问题被问到了,但是,由于没有提供解决方案,我认为我仍然可以分享一个解决方案。

该错误表明您的应用程序无法连接到数据库,没有发现数据库连接是精确的。

如果你的应用程序托管并在除本地实例之外的某个平台上进行测试,那么你可能会使用GIT进行推送,默认情况下,zf2在.gitignore中有一个config/autoload文件}文件夹忽略local.php以及该文件夹中具有.local.php扩展名的所有其他文件。 由于您使用的是DoctrineORM,但不是必需的,但我猜您在doctrine.local.php文件夹中可能有一个config/autoload文件与您的数据库连接。

<强>修正:

  1. 您可以使用ftp来上传数据库连接文件local.php或任何其他带有数据库连接的文件。

  2. 您可以从local.php文件中删除可能包含数据库连接详细信息的.gitignore文件。

  3. 您可以使用global.php

  4. 希望这有助于后来可能遇到类似问题的人。