所以我在我的laravel文件夹上使用我的cmd并尝试做(php artisan migrate:install)。出现了2个错误。
[PDOException] SQLSTATE [HY000] [2006] MySQL服务器已经消失
[ErrorException] PDO :: __ construct():MySQL服务器已经消失
有谁能解释我做错了什么?
答案 0 :(得分:3)
这不是Laravel问题,而是一般的MySQL问题。也许服务器没有运行。你确定你在后台运行MySQL吗?
点击此链接:MySQL Gone Away
在您的系统中执行以下检查:
在此之后,尝试再次运行迁移命令,即:
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 2
到DB_PORT=3306
继续
database.php 从DB_PORT=
到'port' => env('DB_PORT', '3306'),
答案 4 :(得分:0)
在我的情况下问题是我将DB_HOST
更改为localhost
但是通过将其保留default
即127.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)
除了其他答案:
localhost
和127.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
我相信PHP仍然不支持这种身份验证方式
Laravel 5.6版 我的PHP版本7.2.10 MySQL版本8.0.13
使用旧版身份验证方法(保持MySQL 5.x兼容性)