所以我在我的laravel文件夹上使用我的cmd并尝试做(php artisan migrate:install) . 出现了2个错误 .
[PDOException] SQLSTATE [HY000] [2006] MySQL服务器已经消失
[ErrorException] PDO :: __ construct():MySQL服务器已经消失
谁能解释一下我做错了什么?
这不是Laravel问题,而是一般的MySQL问题 . 也许服务器没有运行 . 你确定你在后台运行MySQL吗?
检查此链接:MySQL Gone Away
在您的系统中执行以下检查:
数据库引擎正在运行
您已创建数据库
您已创建用户并已授予数据库权限
您已在Laravel的.env文件中设置了用户和数据库 .
在此之后,尝试再次运行迁移命令,即:
php artisan migrate
正如所解释Here
如果有帮助,请告诉我们:) .
在查询期间,您与服务器的SQL连接丢失 . 这是暂时的问题 . 这是因为 max_allowed_packet 的默认设置非常低 .
max_allowed_packet
将 my.cnf (在[mysqld]下)中的 max_allowed_packet 提升到8或16M通常可以修复它 .
my.cnf
[mysqld] max_allowed_packet=16M
NOTE: 这可以在服务器上运行时设置 . 一旦完成,您需要 restart MySQL服务 .
restart
使用: set global max_allowed_packet=104857600 . 我的 Value 设置为100MB .
set global max_allowed_packet=104857600
对我来说问题似乎是我将错误的端口分配给我的Laravel项目的 .env 文件 . 后来,当我将它与 my.cnf 文件匹配时,它起作用了 .
.env
我正在使用Ubuntu 16.04 nginx MariaDB Laravel项目 .
在我的情况下,问题是我将 DB_HOST 更改为 localhost 但是通过将其保持 default 即 127.0.0.1 并将端口设置为默认 3306 来修复 . 以下是xampp中localhost的配置:
DB_HOST
localhost
default
127.0.0.1
3306
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=hmb DB_USERNAME=root DB_PASSWORD=
虽然我使用 localhost:8081/phpmyadmin 来访问我的 db
localhost:8081/phpmyadmin
db
如果有人正在寻找解决方案,请尝试清除您拥有的所有缓存,您可以手动删除 bootstrap/cache 文件夹中的缓存文件 . 请勿触摸packages.php和services.php .
我在我的laravel应用程序中遇到了这个问题,即使我尝试连接vanilla PHP,我也收到了此错误消息
PHP警告:mysqli :: __ construct():执行caching_sha2 auth时出现意外的服务器:109
PHP警告:未捕获的PDOException:PDO :: __ construct():在执行caching_sha2 auth时出现意外的服务器:在php shell代码中为21:1
我相信PHP仍然不支持这种身份验证方式
Laravel版本5.6我的PHP版本7.2.10 MySQL版本8.0.13
解决这个问题我删除了MySQL,然后安装它并选择此选项
use legacy authentication method ( Retain MySQL 5.x compatibility )
6 回答
这不是Laravel问题,而是一般的MySQL问题 . 也许服务器没有运行 . 你确定你在后台运行MySQL吗?
检查此链接:MySQL Gone Away
在您的系统中执行以下检查:
数据库引擎正在运行
您已创建数据库
您已创建用户并已授予数据库权限
您已在Laravel的.env文件中设置了用户和数据库 .
在此之后,尝试再次运行迁移命令,即:
正如所解释Here
如果有帮助,请告诉我们:) .
在查询期间,您与服务器的SQL连接丢失 . 这是暂时的问题 . 这是因为
max_allowed_packet
的默认设置非常低 .将
my.cnf
(在[mysqld]下)中的max_allowed_packet
提升到8或16M通常可以修复它 .NOTE: 这可以在服务器上运行时设置 . 一旦完成,您需要
restart
MySQL服务 .使用:
set global max_allowed_packet=104857600
. 我的 Value 设置为100MB .对我来说问题似乎是我将错误的端口分配给我的Laravel项目的
.env
文件 . 后来,当我将它与my.cnf
文件匹配时,它起作用了 .我正在使用Ubuntu 16.04 nginx MariaDB Laravel项目 .
在我的情况下,问题是我将
DB_HOST
更改为localhost
但是通过将其保持default
即127.0.0.1
并将端口设置为默认3306
来修复 . 以下是xampp中localhost的配置:虽然我使用
localhost:8081/phpmyadmin
来访问我的db
如果有人正在寻找解决方案,请尝试清除您拥有的所有缓存,您可以手动删除 bootstrap/cache 文件夹中的缓存文件 . 请勿触摸packages.php和services.php .
我在我的laravel应用程序中遇到了这个问题,即使我尝试连接vanilla PHP,我也收到了此错误消息
PHP警告:mysqli :: __ construct():执行caching_sha2 auth时出现意外的服务器:109
PHP警告:未捕获的PDOException:PDO :: __ construct():在执行caching_sha2 auth时出现意外的服务器:在php shell代码中为21:1
我相信PHP仍然不支持这种身份验证方式
Laravel版本5.6我的PHP版本7.2.10 MySQL版本8.0.13
解决这个问题我删除了MySQL,然后安装它并选择此选项
use legacy authentication method ( Retain MySQL 5.x compatibility )