我在尝试使用doctrine CLI时遇到了未被捕获的PDO异常。我正在关注marco's tutorial。
我的配置是: ZF 2.5.1,PHP版本5.5.21
遇到异常:
致命错误:未捕获的异常' 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行
有人可以帮忙或给我任何建议吗?
其他信息:
用于访问Doctrine CLI的命令:
./vendor/bin/doctrine-module orm:validate-schema
/ vendor / bin /的内容:
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
来自doctrine-module文件的片段:
/* @var $cli \Symfony\Component\Console\Application */
$cli = $application->getServiceManager()->get('doctrine.cli');
exit($cli->run());
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);
}
}
答案 0 :(得分:4)
我知道现在已经有一段时间了,因为这个问题被问到了,但是,由于没有提供解决方案,我认为我仍然可以分享一个解决方案。
该错误表明您的应用程序无法连接到数据库,没有发现数据库连接是精确的。
如果你的应用程序托管并在除本地实例之外的某个平台上进行测试,那么你可能会使用GIT
进行推送,默认情况下,zf2在.gitignore
中有一个config/autoload
文件}文件夹忽略local.php
以及该文件夹中具有.local.php
扩展名的所有其他文件。
由于您使用的是DoctrineORM
,但不是必需的,但我猜您在doctrine.local.php
文件夹中可能有一个config/autoload
文件与您的数据库连接。
<强>修正:强>
您可以使用ftp来上传数据库连接文件local.php
或任何其他带有数据库连接的文件。
您可以从local.php
文件中删除可能包含数据库连接详细信息的.gitignore
文件。
您可以使用global.php
希望这有助于后来可能遇到类似问题的人。