Php SQLSTATE[HY000][2002]在yii2中没有这样的文件或目录

Php SQLSTATE[HY000][2002]在yii2中没有这样的文件或目录,php,mysql,yii2,apache2,Php,Mysql,Yii2,Apache2,我使用的是ubuntu 16.04。 PHP版本7.0.4-7ubuntu2 Apache/2.4.18(Ubuntu) PHP扩展名:mysqli(用phpmyadmin编写) 我将ubuntu从15.10升级到了16.04,我有一个错误: 我的项目在服务器上正确运行,但在操作系统中无法运行: Database Exception – yii\db\Exception SQLSTATE[HY000] [2002] No such file or directory ↵ Caused by: P

我使用的是ubuntu 16.04。
PHP版本7.0.4-7ubuntu2

Apache/2.4.18(Ubuntu)

PHP扩展名:mysqli
(用phpmyadmin编写)

我将ubuntu从
15.10升级到了16.04,我有一个错误:

我的项目在服务器上正确运行,但在操作系统中无法运行:

Database Exception – yii\db\Exception
SQLSTATE[HY000] [2002] No such file or directory
↵
Caused by: PDOException
SQLSTATE[HY000] [2002] No such file or directory

in /var/www/html/iicitySite/vendor/yiisoft/yii2/db/Connection.php at line 579
将“localhost”更改为“127.0.0.1”作为您的主机

return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',    
            'dsn' => 'mysql:host=127.0.0.1;dbname=abc',
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ],

希望这个答案能帮助你:

将主机名从localhost更改为127.0.0.1

这在backend\common\config\main-local.php中

现在运行php yii migrate


希望它能在数据库中成功创建表

如果您使用mamp,不要在MAC OS中使用“php”命令,而是在mamp中使用“php”,例如
/Applications/mamp/bin/php/php5.6.30/bin/php yii migrate
对于mamp用户的解决方案是

'components' => [
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;port=8889;dbname=mydbname;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock',
        'username' => 'myuser',
        'password' => 'mypassword',
        'charset' => 'utf8',
    ],
],

我也有同样的问题。更改
localhost
并没有解决我的问题。相反,请按如下方式添加您的db端口:

'dsn'=>'mysql:host=localhost:3307;dbname=geep'

我在MAMP环境下运行,使用上面的2个解决方案运行良好

  • localhost
    更改为
    127.0.0.1
  • 保留为localhost并定义mysql端口,即使使用了默认端口(
    localhost:3306

  • 对于PHP7.2.24-0ubuntu0.18.04.3

    • 获取mysql套接字路径
    • 将套接字信息添加到yii2的数据库配置中
    要获取套接字路径,请登录mysql并执行以下步骤

    mysql -u root -p
    mysql> show variables like '%sock%';
    +-----------------------------------------+------------------------------------------------------+
    | Variable_name                           | Value                                                |
    +-----------------------------------------+------------------------------------------------------+
    | mysqlx_socket                           | /tmp/mysqlx.sock                                     |
    | performance_schema_max_socket_classes   | 10                                                   |
    | performance_schema_max_socket_instances | -1                                                   |
    | socket                                  | /opt/packages/lampstack-7.3.9-0/mysql/tmp/mysql.sock |
    +-----------------------------------------+------------------------------------------------------+
    4 rows in set (0.00 sec)
    exit
    
    • 打开终端并执行以下步骤

      mysql -u root -p
      mysql> show variables like '%sock%';
      +-----------------------------------------+------------------------------------------------------+
      | Variable_name                           | Value                                                |
      +-----------------------------------------+------------------------------------------------------+
      | mysqlx_socket                           | /tmp/mysqlx.sock                                     |
      | performance_schema_max_socket_classes   | 10                                                   |
      | performance_schema_max_socket_instances | -1                                                   |
      | socket                                  | /opt/packages/lampstack-7.3.9-0/mysql/tmp/mysql.sock |
      +-----------------------------------------+------------------------------------------------------+
      4 rows in set (0.00 sec)
      exit
      
    • 接下来添加以下配置信息

      'class' => 'yii\db\Connection',
      'dsn' => 'mysql:unix_socket=/opt/packages/lampstack-7.3.9-0/mysql/tmp/mysql.sock;dbname=basketmantra',
      'username' => 'root',
      'password' => 'root123',
      'charset' => 'utf8',
      
    我希望这有帮助

    在某些情况下,您可以使用httpd、apache或lampp,然后还要确保检查终端中的php和mysql命令是否与web服务器使用的版本相同

    web服务器中的phpinfo()有助于查找web服务器使用的版本

        <?php
            phpinfo();
        ?>
    

    使用yii2,我的解决方案是在common/main-local.php中注释代码 出于某种原因,yii2尝试在生产环境中获取main-local.php,而不是在common文件夹中获取main.php,但是当被注释时,它可以工作(在common/main.php上获取DB configs)

    <?php
    // common/main-local.php
    return [
     /*  'components' => [
           'db' => [
               'class' => 'yii\db\Connection',
               'dsn' => 'mysql:host=172.17.0.2;dbname=ememariadb',
               'username' => 'dbsenha',
               'password' => 'dbUser',
               'charset' => 'utf8',
           ],
       ],*/
    ];
    

    试试看,我遇到了这个问题,问题是数据库服务器(mysql)没有运行。如果使用了localhost,请将“localhost”改为“127.0.0.1”作为你的host@vijaynathjimac也是如此。如果你使用标准的Yii2
    docker compose.yml
    你的dns必须是
    mysql:host=mysql;dbname=abc