背景
我有一个基本的laravel应用程序,工作得很好。我跑了一辆 php artisan make:auth
在它上面,迁移并注册了一个新用户,可以登录并查看home.blade.php。我正在用代客服务这个网站,并把它停在了目录里。
我不是用宅基地,只是用我的本地机器。
是什么导致了这个问题
我跑了一辆 brew update / brew upgrade
,现在我根本无法登录到应用程序。
预期结果
登录到应用程序并查看home.blade.php
抛出的错误 PDOException (2006) SQLSTATE[HY000] [2006] MySQL server has gone away
在浏览器中显示。 PDOException(code: 0): PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109
出现在拉威尔日志里。
我怀疑这与mysql的用户权限有关,尽管我在这里还停留在原地,所以我想我应该把它扔给计算机界的欧比旺。
什么有效
我仍然可以在浏览器中查看welcome.blade.php,ping服务器会返回一个响应,这样就可以了。
我可以通过终端以root身份登录mysql,没问题。 mysql -u root -p
```
mysql> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| jason | % |
| jason | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)
我的数据库存在
mysql> show tables;
+-----------------------+
| Tables_in_digitalchef |
+-----------------------+
| migrations |
| model_has_permissions |
| model_has_roles |
| orders |
| password_resets |
| permissions |
| role_has_permissions |
| roles |
| users |
+-----------------------+
9 rows in set (0.00 sec)
mysql>
我的设置
php版本
jason@Jasons-MacBook-Air:~/Desktop/websites$ php -v
PHP 7.2.8 (cli) (built: Jul 19 2018 12:15:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.8, Copyright (c) 1999-2018, by Zend Technologies
nginx版本
jason@Jasons-MacBook-Air:~/Desktop/websites$ nginx -v
nginx version: nginx/1.15.3
mysql版本
jason@Jasons-MacBook-Air:~$ mysql --version
mysql Ver 8.0.12 for osx10.13 on x86_64 (Homebrew)
代客泊车版
Laravel Valet 2.0.9
$路径
jason@Jasons-MacBook-Air:~$ echo $PATH
/usr/local/opt/mysql@8.0/bin:/usr/local/sbin:/Users/jason/.composer/vendor/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin/python3:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
编辑-更新了此内容,仍然没有找到my/etc/my.cnf的内容:
[mysqld]
max_allowed_packet = 500M
wait_timeout = 58800
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/server-cert.pem
ssl-key=/etc/mysql-ssl/server-key.pem
我的环境
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:/rKbcwAqCwbNt9XNBZq1jzvRzi7K4Jdch3k5/OtUgis=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=digitalchef
DB_USERNAME=root
DB_PASSWORD=root
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
我的数据库.php
5条答案
按热度按时间gcuhipw91#
安装mysql和卸载mysql/mariadb并不能解决这个问题。发生这种情况有几个原因。
这通常表示mysql服务器连接问题或超时。
您可以在中调整设置
my.cnf
通过调整wait_timeout
以及max_allowed_packet
.试着把它调高一点,不断调整设置直到你做对为止。确保在进行这些更改后重新启动mysql。
这里有一个很好的解释你需要改变什么
https://www.digitalocean.com/community/questions/mysql-server-has-gone-away
0qx6xfy62#
你可能已经重新启动了mysql,但如果没有,就试试吧
如果不起作用,请尝试卸载:
安装mariadb,其工作原理与mysql类似:
那你还是可以的
mysql -uroot
管理数据库dkqlctbz3#
解决了!呜呼!再次感谢大家的建议,我真的很感谢大家的帮助。
我如何决定:
深入研究,我发现我安装了两个版本的mysql-5.7和8.0。
我卸载了mysql@5.7 通过自制
brew uninstall mysql@5.7
链接了正确的版本brew link mysql@8.0
我更新了$pathsudo nano ~/.bash_profile
并在5.7中添加了以下行:export PATH="/usr/local/opt/mysql@8.0/bin:$PATH"
我在这里按照@poohbear的答案修改mysql用户然后,我从mysql提示符截断了laravel数据库上的user表
mysql -u root -p
mysql> USE digitalchef;mysql> TRUNCATE TABLE users;
我不知道事后是否有什么进展,但我还是决定php artisan config:cache
之后,只是为了更好的衡量。希望这能帮助那些正在挣扎的人!再次感谢大家的支持,@poohbear的回答值得称赞。
kq4fsx7k4#
如果msyql客户端正常,只有php7脚本有问题,可以检查php.ini(mysqlnd.net\u read\u timeout)
zujrkrfu5#
这对我有用。我使用以下命令用新的身份验证插件更新我的密码。现在可以使用mysql 8了。玩得高兴。
如果上述方法无效,请改用此方法。