【问题标题】:Doctrine PDOException No such file or directoryDoctrine PDOException 没有这样的文件或目录
【发布时间】:2015-04-28 16:55:10
【问题描述】:

我正在使用 ZF2 和 DoctrineOrm,并且最近在我的运行 OSX (Yasomite) 的 mac 上使用 vagrant 安装了一个本地环境。

除了我尝试使用 Doctrine 供应商工具时出现以下错误之外,一切都按预期工作:

./vendor/bin/doctrine-module orm:schema-tool:create --dump-sql

错误如下:

带有消息“SQLSTATE[HY000] [2002] 的未捕获异常“PDOException” 在......中没有该文件或目录 example.com/trunk/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43

编辑

违规类的第 43 行:parent::__construct($dsn, $user, $password, $options);

class PDOConnection extends PDO implements Connection, ServerInfoAwareConnection
{
     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);
            }
        }

当我从 catch 语句中转储变量时,它们符合预期。

我可以通过管理员访问mysql位置:http://192.168..../adminer/

由于我无法创建数据库,因此网站加载虽然出现错误。

我记得当我最初设置本地 MAMP 环境时遇到类似问题并且必须将以下行添加到我的 pdo 设置中:

/Applications/MAMP/tmp/mysql/mysql.sock

 'connection' => [
            'orm_default' => [
                'driverClass' =>'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => [
                    'host'     => 'localhost',
                    'port'     => '3306',
                    'user'     => 'games_cloud',
                    'password' => 'games_cloud',
                    'dbname'   => 'games_cloud',
                    'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock'
                ]
            ]
        ],

我忍不住想我需要做同样的事情,但我不确定如何去做。

编辑:

SSH 到 Vbox 我看到套接字位于此处:/var/lib/mysql/mysql.sock

连接到这个的正确设置是什么?以下方法不起作用:

'connection' => [
            'orm_default' => [
                'driverClass' =>'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => [
                    'host'     => '192.168.56.101/',
                    'port'     => '3306',
                    'user'     => 'games_cloud',
                    'password' => 'games_cloud',
                    'dbname'   => 'games_cloud',
                    'unix_socket' => '/var/lib/mysql/mysql.sock'   //To use Doctrine Entity Generator
                ]
            ]
        ],

任何帮助将不胜感激!

【问题讨论】:

  • 这一行读什么:example.com/trunk/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43 ...它试图找到什么文件和失败?你确定是unix套接字吗?
  • 我已经更新了问题以包含方法,第 43 行是这样的: parent::__construct($dsn, $user, $password, $options);
  • 在我的例子中,数据库服务在重启后没有运行。启动它解决了它。 (操作系统 => Linux)

标签: doctrine-orm zend-framework2


【解决方案1】:

设法让它工作,这是一个设置:

'connection' => [
            'orm_default' => [
                'driverClass' =>'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => [
                    'host'     => 'localhost',
                    'port'     => '3306',
                    'user'     => 'games_cloud',
                    'password' => 'games_cloud',
                    'dbname'   => 'games_cloud',
                    'unix_socket' => '/var/lib/mysql/mysql.sock'
                ]
            ]
        ],

【讨论】:

    猜你喜欢
    • 2020-05-07
    • 2015-06-24
    相关资源
    最近更新 更多