Laravel Migration останавливается и ничего не делает

Просто выполните все шаги, перечисленные на сайте Laravel, чтобы установить и запустить MacOS HighSierra. В настоящее время у меня установлены Composer, Homebrew, valet, PHP 7.2.8, MySQL версии 8.0.11 и Laravel 5.6.28. Я могу создать новый проект, выполнив Laravel new blog командовать и не иметь никаких проблем. Также, когда я захожу в свой браузер, я вижу текущий проект, который я только что создал или работаю над ним. Я могу запустить valet list команда, и поэтому я знаю, что он работает / работает. Я также могу создать миграцию и показать ее в моем проекте, запустив php artisan make:migration test_test_test,

мой PATH также имеет ~/.composer/vendor/bin в этом тоже.

мой файл.env выглядит так

APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog        
DB_USERNAME=root
DB_PASSWORD=

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 artisan migrate -vvv команда, и она работает и останавливается / зависает без вывода. Я должен ctl-c, чтобы выбраться из этого. попробовал -v /-vv а также сделал то же самое.

Я создал базу данных с именем blog и даже добавить таблицу test вручную, чтобы убедиться, что база данных работает / работает.

Обновить

Ушли вперед и удалите MySQL и переустановите его. Мне удалось запустить команду php artisan migrate -v, и я получаю эту ошибку.

Теперь я получаю эту ошибку.

MacBook-Pro:anything computername$ php artisan migrate -v

PDOException  : SQLSTATE[HY000] [2006] MySQL server has gone away

at /Users/computername/Sites/anything/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68
64|         if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
65|             return new PDOConnection($dsn, $username, $password, $options);
66|         }
67| 
> 68|         return new PDO($dsn, $username, $password, $options);
69|     }
70| 
71|     /**
72|      * Determine if the connection is persistent.

Трассировка исключения:

Создал маршрутизатор и просмотр, который соединяется с таблицей, которую я создаю, чтобы увидеть, смогу ли я получить доступ к переменным базы данных и распечатать их. По возвращении я получил эту ошибку.

Exception message: PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109

6 ответов

Решение

У меня сама была эта проблема и получаю ошибку Exception message: PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109

Вот как я это исправил:

Я вошел в MySQL как пользователь root, как так mysql –uroot –p и ввел мой пароль

Вы можете получить список пользователей, которые находятся на сервере, набрав SELECT User, Host FROM mysql.user;

Убедитесь, что вы видите пользователя, которого пытаетесь подключиться к базе данных из файла.env. Вам нужно будет изменить текущего пользователя, чтобы использовать caching_sha2_password, который требуется в продолжительной версии mysql.

Вот эта команда.

ALTER USER `username`@`localhost` IDENTIFIED WITH caching_sha2_password BY 'password';

Пока вы вошли в систему как пользователь root, вам нужно запустить эту команду, чтобы позволить вашему пользователю выполнять необходимые задачи, которые разрешены для php artisan migrate произойдет. Пример: CREATE, DROP, ALTER, DELETE и тому подобное.

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

Если это не работает, вы также можете выбрать, какие команды вы хотите разрешить, вместо того, чтобы предоставить им полный доступ.

GRANT SELECT, INSERT ON *.* TO 'someuser'@'somehost';

Надеюсь, это поможет ~

Сервер ушел - ошибка MySql, проверьте эту ссылку

Убедитесь, что ваша служба mysql действительно запущена и после этого у вас есть правильные учетные данные .env файл

Что касается "начальной ошибки" при миграции, нам нужно посмотреть, что находится в коде миграции.

Изменить: Поскольку миграции по умолчанию Laravel, то проблема, вероятно, заключается в связи между Laravel и базой данных.

Чтобы подтвердить это:

  1. Создать базу данных вручную;
  2. Создайте таблицу и поместите в нее строку;
  3. Создать маршрут, который возвращает DB::statement('select * from tablejustcreated');

Сделайте запрос к этому маршруту, и если он зависнет, бум, это соединение и, скорее всего, .env учетные данные файла (имя пользователя и пароль, хост, порт).

У меня была такая же проблема, я исправил ее с помощью привилегий сброса.

Большое спасибо @poohhbear и всем остальным за помощь в исправлении.

Что на самом деле работало для меня:

ALTER USER 'myusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword';

... предположительно, потому что новый MySQL по умолчанию caching_sha2_password и PHP не знал, как справиться с этим.

Это известная ошибка в PHP 7.2.8. Переходите к PHP 7.2.7 до тех пор, пока это не будет исправлено.

Я столкнулся с той же проблемой при обновлении с PHP 7.2.7 до PHP 7.2.8.

Смотрите https://bugs.php.net/bug.php?id=76651

Попробуй это php artisan migrate --force[ https://laravel.com/docs/5.6/migrations] эта документация по миграции, я думаю, может быть полезной

Удалить всю таблицу в блоге БД и запустить эту команду ремесленника

php artisan migrate

это построить таблицы в дб

Другие вопросы по тегам