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

时间:2016-04-29 05:53:01

标签: php mysql yii2 apache2

我使用ubuntu 16.04.
  PHP Version 7.0.4-7ubuntu2
    Apache/2.4.18 (Ubuntu)
    PHP extension: mysqli(在phpmyadmin Written中)。

我从15.10 to 16.04升级了我的ubuntu,我有这个错误:

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

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

8 个答案:

答案 0 :(得分:34)

将“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',
        ],

答案 1 :(得分:2)

对于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',
    ],
],

答案 2 :(得分:1)

如果你使用mamp,请不要使用" php" MAC OS中的命令,但使用" php"在mamp中,例如/Applications/MAMP/bin/php/php5.6.30/bin/php yii migrate

答案 3 :(得分:1)

对于PHP 7.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
    
  • 下一步添加以下配置信息

    '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();
    ?>

对于命令

    $ type php
    php is hashed (/usr/bin/php)

    $ type mysql
    mysql is /opt/packages/lampstack-7.3.9-0/mysql/bin/mysql

答案 4 :(得分:0)

希望这个答案能帮到你:

将主机名从 localhost 更改为 127.0.0.1

这是在后端\ common \ config \ main-local.php

现在你运行 php yii migrate

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

答案 5 :(得分:0)

我也有同样的问题。更改localhost并没有解决我的问题。而是像这样添加您的数据库端口:

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

答案 6 :(得分:0)

我正在MAMP环境中运行,并且可以使用上述2种解决方案很好地工作

  1. localhost更改为127.0.0.1
  2. 保持为本地主机,并定义mysql端口,甚至使用默认端口(localhost:3306

答案 7 :(得分:0)

使用yii2,我的解决办法是在common/main-local.php中注释代码 出于某种原因,yii2 尝试在生产中获取 main-local.php 而不是 common 文件夹中的 main.php,但是当被注释时它起作用了(在 common/main.php 上获取 DB 配置

<?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',
       ],
   ],*/
];