web-dev-qa-db-fra.com

Laravel La migration stagne et ne fait rien

Vient de suivre toutes les étapes répertoriées sur le Laravel site } à installer et à démarrer pour MacOS HighSierra . J'ai actuellement Composer, Homebrew, valet, PHP 7.2.8, MySQL version 8.0.11 et Laravel 5.6.28 installé. Je peux créer un nouveau projet en exécutant la commande Laravel new blog sans avoir de problèmes. De plus, lorsque je vais sur mon navigateur, je peux voir le projet en cours que je viens de créer ou sur lequel je travaille. Je peux exécuter la commande valet list et je connais donc son fonctionnement/fonctionnement. Je peux aussi créer une migration et l'afficher dans mon projet en exécutant le php artisan make:migration test_test_test.

Ma PATH a aussi ~/.composer/vendor/bin également.

mon fichier .env ressemble à un tel

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}"

J'exécute la commande php artisan migrate -vvv qui s'exécute et se bloque/raccroche sans aucun résultat. Je dois ctl-c pour en sortir. essayé le -v /-vv aussi, a fait la même chose.

J'ai créé une base de données nommée blog et j'ai même ajouté manuellement une table test pour m'assurer que la base de données fonctionnait/était opérationnelle.

Mise à jour

Avancez et désinstallez MySQL et réinstallez-le. J'ai réussi à exécuter la commande php artisan migrate -v et j'obtiens cette erreur.

maintenant je reçois cette erreur.

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.

Trace d'exception:

Création d'un routeur et d'une vue se connectant à une table que je crée pour voir si je serais en mesure d'accéder aux variables de la base de données et de les imprimer. Au retour, j'ai eu cette erreur.

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

4
whisk

J'ai moi-même eu ce problème et obtenir l'erreur Exception message: PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109

Voici comment je l'ai corrigé:

Je me suis connecté à mysql en tant qu'utilisateur root, comme ceci mysql –uroot –p et j'ai entré mon mot de passe 

Vous pouvez obtenir une liste des utilisateurs qui se trouvent sur le serveur en tapant ceci SELECT User, Host FROM mysql.user;

Assurez-vous de voir l'utilisateur que vous essayez de connecter à la base de données à partir de votre fichier .env. Vous devrez modifier l'utilisateur actuel pour utiliser le mot de passe caching_sha2 requis dans la dernière version de mysql.

Voici cette commande. 

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

Tout en restant connecté en tant qu'utilisateur root, vous devez exécuter cette commande pour permettre à votre utilisateur d'effectuer les tâches nécessaires autorisées pour l'exécution d'un php artisan migrate. Ex: CREATE, DROP, ALTER, DELETE et tel. 

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

Si cela ne fonctionne pas, vous pouvez également choisir les commandes que vous souhaitez autoriser au lieu de leur donner un accès complet. 

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

J'espère que cela aide ~

7
poohbear

Le serveur est parti est une erreur MySql, vérifiez ce lien

Vérifiez que votre service mysql est bien en cours d’exécution et ensuite, que vous avez les bonnes informations d’identification sur votre fichier .env

À propos de «l'erreur initiale» sur les migrations, nous devons voir ce qu'il y a dans le code de migration.

Edit: Les migrations étant la méthode par défaut de Laravel, le problème réside probablement dans la connexion entre Laravel et la base de données.

Pour le confirmer:

  1. Créer une base de données manuellement;
  2. Créez une table et placez-y une ligne.
  3. Créez un itinéraire qui retourne DB::statement('select * from tablejustcreated');

Faites la demande à cette route et si elle gèle, boum, c'est la connexion et probablement les informations d'identification du fichier .env (nom d'utilisateur et mot de passe, hôte, port).

1
abr

Un grand merci à @poohhbear et à tous les autres de m'avoir aidé à résoudre ce problème.

Ce qui a réellement fonctionné pour moi a été:

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

... sans doute parce que le nouveau MySQL par défaut était caching_sha2_password et PHP ne savait pas comment gérer cela.

0
Brendan White

C'est un bogue connu dans PHP 7.2.8. Passez à PHP 7.2.7 jusqu'à ce qu'il soit corrigé.

J'ai rencontré le même problème lors de la mise à niveau de PHP 7.2.7 à PHP 7.2.8.

Voir https://bugs.php.net/bug.php?id=76651

0
fisharebest