Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQLSTATE[HY000][2002]在Laravel homestead内拒绝连接_Php_Laravel 5_Migration_Homestead_Laravel Artisan - Fatal编程技术网

Php SQLSTATE[HY000][2002]在Laravel homestead内拒绝连接

Php SQLSTATE[HY000][2002]在Laravel homestead内拒绝连接,php,laravel-5,migration,homestead,laravel-artisan,Php,Laravel 5,Migration,Homestead,Laravel Artisan,使用Mac OS X和Homestead 2.2.1以及Laravel 5.2 在终端中(在我的项目文件夹中的homestead中),我可以使用php artisan查看所有可用的命令。当我尝试运行php artisan migrate时,出现了一个连接错误: SQLSTATE[HY000][2002]连接被拒绝 我已经用这些.env设置设置了一个Laravel项目 DB_HOST=127.0.0.1 DB_DATABASE=tcv DB_USERNAME=homestead DB_PASSW

使用Mac OS X和Homestead 2.2.1以及Laravel 5.2

在终端中(在我的项目文件夹中的homestead中),我可以使用php artisan查看所有可用的命令。当我尝试运行php artisan migrate时,出现了一个连接错误:
SQLSTATE[HY000][2002]连接被拒绝


我已经用这些.env设置设置了一个Laravel项目

DB_HOST=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=homestead
DB_PASSWORD=secret
我还尝试了localhost作为DB\u主机,root作为DB\u用户名和DB\u密码。把所有可能的变化放在一起


在Sequel Pro(数据库管理应用程序)中,我可以连接这些设置

Host       127.0.0.1
Username   homestead
Password   secret
Database   tcv
Port       33060
但这个数据库显然是空的,因为我不能从终端迁移到它

据我所知,这是一个配置问题,因为我可以用Sequel Pro连接到它。但老实说,我根本不知道什么是设置错误

谢谢你的帮助

编辑
由于某些原因,当我将项目移动到MAMP并运行php artisan migrate时,我收到了相同的
SQLSTATE[HY000][2002]连接被拒绝的错误。

现在我完全迷路了

问题

在Laravel中,所有连接设置都位于
config/database.php
中。在项目的根目录中还有一个
.env
文件(每个人都使用它来节省时间)。其中包含可用于整个项目的变量

在标准L5项目中,
config/database.php
的MySql部分如下所示:

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
        'engine'    => null,
    ],
请注意,没有端口集

虽然在我的
.env
文件中,我设置了
DB_PORT=33060
。但是这个
值(3306)
从未被读入
config/database.php

所以,不要像我这样愚蠢,忘记检查
database.php
文件


修复

只需在config/database.php中添加
'port'=>env('DB_port',3306),
,并在.env中设置该值,如下所示
DB_port=3306

这是一个简单的修复程序。您的mysql数据库已失去与服务器的连接。如果您正在运行本地服务器,请在终端中运行:

mysqld
这将重新连接您的数据库。然后(如果您使用的是自制软件)运行:


这将在登录时自动连接您的数据库。

我遇到了这个问题。当连接Sequel Pro时,我需要使用
33060
作为端口,但在.env文件中它必须是
3306
。我在.env文件中有
33060
。将其更改为
3306
,并且它工作正常

有可能您的
mysql
尚未启动或未连接到端口
3306
我刚刚遇到这个问题,发现在.env文件中将其从
127.0.0.1
更改为
localhost
修复了它

DB_HOST=localhost

在我的例子中,这个错误是突然出现的。当我看到这个神秘的错误时,我意识到,我试图在vm之外运行这个命令…

这是为任何有问题的人提供的另一个解决方案。我所有的设置都正确,但由于某些原因,我的更改没有更新。Laravel实际上缓存了配置文件(我觉得这完全是愚蠢的)

以下是更新配置后我的解决方案:


php-artisan-config:clear

如果您使用的是
Homestead
,那么您应该使用默认的mysql端口运行它。因此,您应该在.env文件中使用
DB_PORT=3306
,而不是使用
DB_PORT=3306
。另外,记住在homestead安装中运行
php artisan migrate
命令,一切都应该正常


希望能有所帮助。

我也有同样的问题,试试这个

DB_HOST=localhost

如果您在mac OS上使用MAMP,请在mysql数据库配置文件中添加以下行

'unix_socket' => env('DB_SOCKET', ''), 'unix_socket'=>env('DB_socket',''), 并在.env文件中添加

DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock使用
localhost
而不是
127.0.0.1
(在.env文件中),然后运行命令:

php artisan config:cache

对我来说,唯一解决这个问题的方法是将连接详细信息放在config/database.php中,而不是放在.env文件中。希望这有帮助

在您将所有配置放在.env文件上之后,如果您已经运行了
php artisan Service
重新启动它我使用vagrant,但我在盒子外执行php artisan,因此基本上它没有权限

我遇到了类似的问题,这里没有任何建议可以帮助我。 这就解决了我的问题,将应用程序名和数据库主机名设置为相同的值。在我的例子中,127.0.0.1工作正常

APP_URL=127.0.0.1

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=zzz
DB_USERNAME=yyy
DB_PASSWORD=XXX

好的,看来主机不是问题,但实际上是端口

因此,它实际上是浏览器测试的端口,同时也是terminal和Sequel Pro的端口。它是否与将其添加到Homestead.yaml并设置在此处有关

在阅读与Laravel相关的设置时,会显示:


MySQL:33060→ 转发到3306

我可能是因为您可能已经很久没有重新启动PHP artisan了

因此,在对数据库进行更改和配置后:clear Tinker可以正常工作

但要使浏览器引用新的数据库连接,需要重新运行

php工匠服务

  • 从任务管理器终止sqld
  • 从xampp控制面板停止MySQL并重新启动它
  • 如果它仍然抛出相同的问题,请从根文件夹运行

    php artisan cache:clear
    php artisan config:cache
    php artisan serve
    
  • 如果您仍然存在问题,请检查您是否正在使用sql server的多个副本,例如通过Ubuntu应用程序,如果是,请停止Ubuntu中的MySQL服务器

    sudo服务MySQL停止


  • 对我来说,将凭证括在引号中起了作用

    DB_CONNECTION=mysql
    DB_HOST=localhost
    DB_PORT=3306
    DB_DATABASE='zzz'
    DB_USERNAME='yyy'
    DB_PASSWORD='XXX'
    
    我遇到
    DB_CONNECTION=mysql
    DB_HOST=localhost
    DB_PORT=3306
    DB_DATABASE='zzz'
    DB_USERNAME='yyy'
    DB_PASSWORD='XXX'
    
    DB_CONNECTION=mysql
    DB_HOST=mysql
    DB_PORT=8080
    DB_DATABASE=flap_safety
    DB_USERNAME=root
    DB_PASSWORD=mysql
    
        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', 'mysql'),
           // 'port' => env('DB_PORT', '8080'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', 'mysql'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],
    
    services:
        db: <------ This is the name of the DB_HOST
          container_name: admin_db
          image:mysql:5.7.22
        .
        .
        .