Symfony3 - SQLSTATE [HY000] [2002]没有这样的文件或目录

M. *_*las 1 php mysql symfony

我是Symfony的新手,并开始做一些教程,以便完成一些事情.我正在研究Linux Mint 18机器和标准的Symfony3项目.

我想创建一个简单的数据库来玩它,但我遇到一个错误,我找不到合适的解决方案.

我的parameters.yml文件如下所示:

parameters:
   database_host: localhost
   database_port: null
   database_name: symfony
   database_user: root
   database_password: null
   mailer_transport: smtp
   mailer_host: 127.0.0.1
   mailer_user: null
   mailer_password: null
   secret: (not relevant)
Run Code Online (Sandbox Code Playgroud)

我的Genus.php文件如下所示:

namespace AppBundle\Genus;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="genus")
 */
class Genus
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer")
     */
    private $id;
    /**
     * @ORM\Column(type="string")
     */
    private $name;

}
Run Code Online (Sandbox Code Playgroud)

当我执行命令dpkg -l php*mysql时,我得到以下结果:

dpkg -l php*mysql
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version       Architecture  Description
+++-=================-=============-=============-============================
un  php-pdo-mysql     <none>        <none>        (no description available)
ii  php7.0-mysql      7.0.8-0ubuntu amd64         MySQL module for PHP
un  php7.0-pdo-mysql  <none>        <none>        (no description available)
Run Code Online (Sandbox Code Playgroud)

当我尝试使用命令提示符创建本地数据库时

XXX@XXX-pc ~/PhpstormProjects/test_symfony $ php bin/console doctrine:database:create
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

[Doctrine\DBAL\Exception\ConnectionException]
驱动程序中发生异常:SQLSTATE [HY000] [2002]没有这样的文件或目录
[Doctrine\DBAL\Driver\PDOException] SQLSTATE [HY000] [2002]没有这样的文件或目录
[PDOException ] SQLSTATE [HY000] [2002]没有这样的文件或目录

我遇到过很多其他话题,但未能找到正确的答案.谁能告诉我这里缺少什么?任何帮助深表感谢 :)

小智 25

就我而言,我只更改了localhost-> 127.0.0.1并且它有效!


小智 5

可能为时已晚,但我在 symfony 3.2.9 部署中遇到了同样的问题“SQLSTATE[HY000] [2002] No such file or directory”

我通过将 database_host 值从“localhost”更改为我的 parameters.yml 文件中的服务器 IP 来修复它

但是在尝试通过 SSH 运行命令行时,我收到了另一条错误消息:

[Doctrine\DBAL\Exception\ConnectionException]
 An exception occured in driver: SQLSTATE[HY000] [2002] Connection refused
Run Code Online (Sandbox Code Playgroud)

我最终通过在 Doctrine 配置部分的 config.yml 文件中添加这两行来修复它:

unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'
Run Code Online (Sandbox Code Playgroud)

我所有的最终学说配置是这样的:

doctrine:
    dbal:
        driver: pdo_mysql
        host: '%database_host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        unix_socket: /var/lib/mysql/mysql.sock
        server_version: '5.5'
        charset: UTF8
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助某人


小智 1

[PDOException] SQLSTATE[HY000] [2002] 没有这样的文件或目录

当您的 Web 应用程序未连接到数据库时,通常会发生此错误。根据你的parameter.yml,它正在搜索mysql服务器并且没有连接,因为当时mysql没有安装在你的机器上。