Поэтому я использую свой cmd в своей папке laravel, и я попытался это сделать (php artisan migrate: install). 2 ошибки пришли.
[PDOException] SQLSTATE [HY000] [2006] MySQL сервер ушел
[ErrorException] PDO :: __ construct (): сервер MySQL удален
Может кто-нибудь объяснить, что я сделал не так?
Это не проблема Laravel, а общая проблема MySQL. Возможно, сервер не работает. Вы уверены, что используете MySQL в фоновом режиме?
Проверьте эту ссылку: MySQL ушел
Выполните следующие проверки в вашей системе:
После этого попробуйте снова запустить команду migrations, которая:
php artisan migrate
Как объяснил Вот
Дайте нам знать, если это поможет :).
Вы потеряли соединение SQL с сервером во время запроса. Это временно проблема. Это из-за очень низкой настройки по умолчанию max_allowed_packet
,
привлечение max_allowed_packet
в my.cnf
(под [mysqld]) до 8 или 16M обычно исправляет это.
[mysqld]
max_allowed_packet=16M
НОТА: Это может быть установлено на вашем сервере, когда он работает. Вам нужно restart
служба MySQL, как только вы закончите.
Использование: set global max_allowed_packet=104857600
, Мое значение устанавливает его на 100 МБ.
Для меня проблема заключалась в том, что я назначил неправильный порт для моего проекта Laravel .env
файл. Позже, когда я сопоставил его с my.cnf
файл, это сработало.
Я использую Ubuntu 16.04 + nginx + MariaDB + Laravel.
В моем случае проблема была я изменился DB_HOST
в localhost
но это было исправлено, сохранив его default
т.е. 127.0.0.1
и порт по умолчанию 3306
,
Вот конфигурация для localhost в xampp:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=hmb
DB_USERNAME=root
DB_PASSWORD=
Хотя я пользуюсь localhost:8081/phpmyadmin
чтобы получить доступ к моему db
Если кто-то ищет решение, попробуйте очистить весь имеющийся у вас кеш, вы можете вручную удалить файлы кеша в начальная загрузка / кэш папка. Не трогайте package.php и services.php.
В config / database.php вам нужно изменить файл
от
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
]
в
'mysql' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
Надеюсь это сработает
Я столкнулся с этой проблемой в моем приложении laravel, и даже когда я пытался соединиться с vanilla PHP, я получал это сообщение об ошибке
используя mysqli
Предупреждение PHP: mysqli :: __ construct (): непредвиденное изменение сервера во время
делает caching_sha2 auth: 109
используя PDO
Предупреждение PHP: необработанное исключение PDO: PDO :: __ construct (): неожиданно
восстановление сервера при выполнении caching_sha2 auth: 21 в коде оболочки php: 1
Я считаю, что PHP все еще не поддерживает этот способ аутентификации
Laravel версия 5.6
Моя версия PHP 7.2.10
MySQL версия 8.0.13
Чтобы решить эту проблему, я удалил MySQL, а затем установить его
и выберите эту опцию
использовать устаревший метод аутентификации (сохранить совместимость с MySQL 5.x)