所以我在 laravel 文件夹上使用 cmd,并尝试执行(php artisan migrate:install)。出现 2 个错误。
[PDOException] SQLSTATE[HY000] [2006] MySQL 服务器已经消失
[ErrorException] PDO::__construct(): MySQL 服务器已经消失
任何人都可以解释一下我做错了什么吗?
您在查询期间失去了与服务器的 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。
对我来说,问题似乎是我为 Laravel 项目的
.env
文件分配了错误的端口。后来我把它和my.cnf
文件匹配起来,就成功了。
我正在使用 Ubuntu 16.04 + nginx + MariaDB + Laravel 项目。
我遇到了同样的问题。解决办法是把mysql端口号从3306或者80删除,留空 在文件中
.env
DB_PORT=3306
至 DB_PORT=
以及继续
database.php
'port' => env('DB_PORT', '3306'),
至 'port' => env('DB_PORT', ''),
就我而言,问题是我将
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
除了其他答案:
localhost
和 127.0.0.1
中的 .env
域更改为 config/database.php
。git
,请检查 git status
并查看是否有任何不需要的文件已被更改。 因为在我的例子中,文件
options
中用于mysql连接配置的数组config/database.php
不知何故是空白数组。我检查了 git checkout config/database.php
文件,它开始正常工作。
如果有人正在寻找解决方案,请尝试清理您拥有的所有缓存,您可以手动删除 bootstrap/cache 文件夹中的缓存文件。
我的解决方案是修复DB_HOST参数。事实上,我使用 PHPStorm 并在 .env 中设置公共 url,以便使用 IDE 中的数据库工具和这个损坏的 Laravel。 所以我将 DB_HOST 更改为 localhost,Laravel 现在工作正常。
我在运行大量 Laravel 单元测试时在 XAMPP 开发服务器上遇到了这个问题。 XAMPP MySQL 的配置位于
C:\XAMPP\mysql\bin\my.ini
。打开该文件,查找 max_allowed_packet
选项(在 [mysqld]
标题下)。默认情况下,此值设置为 1 MB(更准确地说可能是 1 MB)。
只需将其更改为足够大的值即可防止您再次遇到此问题:
[mysqld]
max_allowed_packet=32M
然后从 XAMPP 控制面板重新启动 MySQL 服务以使更改生效。
经过几个小时的调试,我发现为
MYSQL_ATTR_SSL_CA
提供无效路径会产生
SQLSTATE[HY000] [2006] MySQL 服务器已经消失