安装迁移期间mysql服务器出错(laravel)

时间:2016-01-27 11:48:40

标签: php mysql laravel pdo migrate

所以我在我的laravel文件夹上使用我的cmd并尝试做(php artisan migrate:install)。出现了2个错误。

  1.   

    [PDOException] SQLSTATE [HY000] [2006] MySQL服务器已经消失

  2.   

    [ErrorException] PDO :: __ construct():MySQL服务器已经消失

  3. 有谁能解释我做错了什么?

9 个答案:

答案 0 :(得分:3)

这不是Laravel问题,而是一般的MySQL问题。也许服务器没有运行。你确定你在后台运行MySQL吗?

点击此链接:MySQL Gone Away

在您的系统中执行以下检查:

  1. 数据库引擎正在运行
  2. 您已创建数据库
  3. 您已创建用户并已授予数据库权限
  4. 您已在Laravel的.env文件中设置了用户和数据库。
  5. 在此之后,尝试再次运行迁移命令,即:

    php artisan migrate
    

    正如Here

    所解释的那样

    如果有帮助,请告诉我们:)。

答案 1 :(得分:2)

在查询期间,您与服务器的SQL连接丢失。这是暂时的问题。这是因为max_allowed_packet的默认设置非常低。

max_allowed_packet(在[mysqld]下)my.cnf提升到8或16M通常会修复它。

[mysqld]
max_allowed_packet=16M

注意:这可以在您的服务器上运行时设置。完成后,您需要restart MySQL服务。

使用:set global max_allowed_packet=104857600。我的值设置为100MB。

答案 2 :(得分:1)

对我来说,问题似乎是我将错误的端口分配给了我的Laravel项目的.env文件。后来,当我将它与my.cnf文件匹配时,它起作用了。

我正在使用Ubuntu 16.04 + nginx + MariaDB + Laravel项目。

答案 3 :(得分:1)

我遇到了同样的问题。解决方案是从3306或80中删除mysql端口号,并将其留空 在文件中

.env way 2DB_PORT=3306 继续

database.php DB_PORT='port' => env('DB_PORT', '3306'),

答案 4 :(得分:0)

在我的情况下问题是我将DB_HOST更改为localhost但是通过将其保留default127.0.0.1并将端口设置为默认3306来解决问题。 以下是xampp中localhost的配置:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=hmb
DB_USERNAME=root
DB_PASSWORD=

虽然我使用localhost:8081/phpmyadmin来访问我的db

答案 5 :(得分:0)

如果有人正在寻找解决方案,请尝试清除您拥有的所有缓存,您可以手动删除 bootstrap / cache 文件夹中的缓存文件。请勿触摸packages.php和services.php。

答案 6 :(得分:0)

除了其他答案:

  • 尝试将localhost127.0.0.1中的.env域都更改为config/database.php
  • 此外,如果您使用的是git,请检查git status并查看是否已更改了不需要的文件。

因为在我的情况下,文件options中用于mysql连接配置的config/database.php数组是空白数组。我签出了git checkout config/database.php文件,它开始正常工作。

答案 7 :(得分:0)

我的解决方案是修复 DB_HOST 参数。事实上,我使用 PHPStorm 并在 .env 中设置了公共 url,以便使用来自 IDE 和这个损坏的 Laravel 的数据库工具。 所以我将 DB_HOST 更改为 localhost,Laravel 现在可以正常工作了。

答案 8 :(得分:-1)

我在laravel应用程序中遇到了这个问题,即使当我尝试连接香草PHP时,我仍然收到此错误消息

  • 使用mysqli

    PHP警告:mysqli :: __ construct():意外的服务器在 做caching_sha2验证:109

  • 使用PDO

    PHP警告:未捕获PDOException:PDO :: __ construct():意外 服务器在执行caching_sha2 auth时歇息:php shell code:1

  • 中为21

我相信PHP仍然不支持这种身份验证方式

Laravel 5.6版 我的PHP版本7.2.10 MySQL版本8.0.13

为解决此问题,我删除了MySQL,然后安装它 并选择此选项use legacy authentication method ( Retain MySQL 5.x compatibility )

使用旧版身份验证方法(保持MySQL 5.x兼容性)