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

Только что выполнил все шаги, перечисленные на сайте Laravel, чтобы установить и начать работу в течение < strong>MacOS HighSierra. В настоящее время у меня установлены Composer, Homebrew, камердинер, 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


person whisk    schedule 22.07.2018    source источник
comment
Что в вашей миграции?   -  person Devon    schedule 22.07.2018
comment
только две миграции, которые поставляются в комплекте с установкой. create_users_table.php и create_password_resets_table.php   -  person whisk    schedule 22.07.2018
comment
Попробуйте увеличить детализацию, art migrate --verbose и отредактируйте вопрос с выводом. Что выдает php --version, вы запустили composer install без ошибок? Какая у вас версия MySQL? (mysql --version).   -  person Kyslik    schedule 22.07.2018
comment
версии всего в вопросе выше, я также добавил версию mySql.   -  person whisk    schedule 22.07.2018
comment
Попробуйте запустить DB::select('SHOW TABLES'); в artisan's tinker, чтобы посмотреть, получите ли вы ответ из базы данных.   -  person Devon    schedule 22.07.2018
comment
Когда я запускаю это, я не получаю ответа.   -  person whisk    schedule 22.07.2018
comment
Похоже, что-то не так с ремесленником.   -  person poohbear    schedule 23.07.2018
comment
@whisk APP_DEBUG настроен на true в вашем .env?   -  person Quezler    schedule 25.07.2018
comment
Используете ли вы какие-либо контейнеры/VM? Если да, то убедитесь, что к базе данных можно подключиться из системы, в которой запущена команда php artisan migrate.   -  person Jithin Jose    schedule 25.07.2018
comment
@Quezler APP_DEBUG имеет значение true в файле .env @JithinJose Я не использую какой-либо контейнер / виртуальную машину, если только Homebrew не считается таковым.   -  person whisk    schedule 25.07.2018
comment
можешь поделиться ./storage/logs/laravel.log?   -  person Quezler    schedule 25.07.2018
comment
Что вам говорит which php?   -  person miken32    schedule 25.07.2018
comment
@miken32 работает, что дает мне это /usr/local/bin/php   -  person whisk    schedule 25.07.2018
comment
И это правильная версия PHP, которую вы ожидаете? Можете ли вы получить какую-либо продукцию от ремесленника? php artisan list или что?   -  person miken32    schedule 25.07.2018
comment
Как вы создали базу данных?   -  person Jonas Staudenmeir    schedule 25.07.2018
comment
@ miken32 когда я запускаю команду artisan list, она показывает мне весь список.   -  person whisk    schedule 25.07.2018
comment
у вас установлен php-mysql или php7.2-mysql?   -  person rüff0    schedule 25.07.2018
comment
php7.2-mysql установлен, когда я проверяю версию в базе данных, я получаю v8.0.11   -  person whisk    schedule 25.07.2018
comment
Похоже, несоответствие в том, как проверяется пароль. Исправление должно изменить пароль для этого конкретного пользователя с терминала MySQL. Откройте терминал и установите пароль следующим образом: mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'add your password here';. Видя, что это классическая настройка test/dev, использование root/root для пользователя MySQL не редкость. Попробуйте сделать это, добавьте новый пароль в .env и сообщите, если это сработало :)   -  person N.B.    schedule 26.07.2018


Ответы (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';

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

person poohbear    schedule 27.07.2018
comment
Этот сайт помог мне разобраться с GRANT digitalocean.com/community/tutorials/ - person whisk; 27.07.2018

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

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

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

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

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

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

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

person abr    schedule 25.07.2018
comment
Хотите решение первой проблемы? (зависание на проблеме миграции), то нам нужно увидеть класс миграции - person abr; 25.07.2018
comment
Я использую две миграции, которые предварительно упакованы со свежей установкой laravel. create_users_table.php и create_password_resets_table.php. Я ничего не делал с ними, но я все еще могу опубликовать их. - person whisk; 25.07.2018
comment
Вы добавили что-нибудь в config/app.php? - person abr; 25.07.2018
comment
Я ничего не добавлял в файл config/app.php. - person whisk; 25.07.2018
comment
Попробуйте добавить --force в команду миграции. Возможно, это как-то связано с камердинером, были ли у вас какие-либо ошибки при установке чего-либо до сих пор, и вы следовали инструкциям на странице laravel? - person abr; 25.07.2018
comment
Я использовал все со страницы Laravel, а также с веб-сайта Laracast. У меня не было никаких проблем ни с чем во время установки. - person whisk; 25.07.2018
comment
Вы можете проверить, имеет ли Laravel соединение с базой данных, вручную создав таблицу (только ради этого, а затем удалите ее) и создав маршрут, который возвращает что-то из этой таблицы (db::statement('select * from соблазнительный')). Скорее всего, проблема связана с подключением Laravel к MySql (проверьте, действительно ли ваш файл .env верен). - person abr; 25.07.2018
comment
создал таблицу и добавил некоторые данные, когда я запускаю ее в браузере, она истекает и говорит: Exception message: PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109, я предполагаю, что это связано с mysql и его соединением. - person whisk; 25.07.2018
comment
Его php-соединение с базой данных. Вы устанавливали что-то из этого софта? Sudo apt-get установить php7.2 mysql. По крайней мере, теперь вы точно знаете ошибку, чего-то не хватает - person abr; 25.07.2018
comment
Я установил все мысли homebrew и composer, задаваясь вопросом, будет ли иметь значение понижение версии mysql. - person whisk; 25.07.2018
comment
Сайт находится здесь laravel.com/docs/5.6/installation, и я смотрел здесь также. laracast — laracasts.com/series/laravel-from-scratch-2017 - person whisk; 25.07.2018
comment
Вы правильно настроили config/database.php? laravel.com/docs/5.6/database#configuration - person abr; 25.07.2018
comment
Давайте продолжим обсуждение в чате. - person whisk; 25.07.2018
comment
Давайте продолжим это обсуждение в чате. - person whisk; 27.07.2018


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

Что действительно сработало для меня, так это:

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

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

person Brendan White    schedule 24.09.2018

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

person Ari Sudarma    schedule 21.07.2020
comment
На самом деле, я вторую половину делаю. К сожалению, если вы начинаете свой ответ с того, что у меня такая же проблема в настоящем времени, это звучит как отсутствие ответа. Рекомендую поменять на У меня была такая же проблема... - person Calculuswhiz; 21.07.2020

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

person Farouk Rabhi    schedule 26.07.2018