webentwicklung-frage-antwort-db.com.de

Laravel Die Migration kommt zum Stillstand und unternimmt nichts

Gehen Sie einfach alle auf der Website Laravel aufgeführten Schritte durch , um MacOS HighSierra zu installieren und in Betrieb zu nehmen. Ich habe derzeit Composer, Homebrew, Valet, PHP 7.2.8, MySQL Version 8.0.11 und Laravel 5.6.28 installiert. Ich kann mit dem Befehl Laravel new blog ein neues Projekt erstellen und habe keine Probleme. Auch wenn ich zu meinem Browser gehe, kann ich das aktuelle Projekt sehen, das ich gerade erstellt habe oder an dem ich arbeite. Ich kann den Befehl valet list ausführen und weiß, dass er ausgeführt wird/funktioniert. Ich kann auch eine Migration erstellen und sie auch in meinem Projekt anzeigen lassen, indem ich den php artisan make:migration test_test_test ausführe.

Meine PATH enthält auch ~/.composer/vendor/bin.

meine .env datei sieht so aus

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

Ich führe den Befehl php artisan migrate -vvv aus und er wird ausgeführt und hängt sich ohne Ausgabe auf. Ich muss ctl-c, um da rauszukommen. habe auch den -v /-vv ausprobiert, habe das selbe gemacht.

Ich habe eine Datenbank mit dem Namen blog erstellt und sogar manuell eine Tabelle test hinzugefügt, um sicherzustellen, dass die Datenbank funktioniert/ausgeführt wird.

Update

Ging voran und deinstalliere MySQL und installiere es neu. Ich konnte den Befehl php artisan migrate -v ausführen und erhalte diesen Fehler.

jetzt erhalte ich diesen Fehler.

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.

Ausnahmeverfolgung:

Erstellt einen Router und eine Ansicht, die eine Verbindung zu einer von mir erstellten Tabelle herstellt, um festzustellen, ob ich auf die Datenbankvariablen zugreifen und diese ausdrucken kann. Bei der Rückkehr habe ich diesen Fehler bekommen.

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

4
whisk

Ich selbst hatte dieses Problem und bekam den Fehler Exception message: PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109

So habe ich es behoben:

Ich habe mich bei mysql als root-Benutzer wie mysql –uroot –p angemeldet und mein Passwort eingegeben 

Sie können eine Liste der Benutzer erhalten, die sich auf dem Server befinden, indem Sie Folgendes eingeben: SELECT User, Host FROM mysql.user;

Stellen Sie sicher, dass Sie den Benutzer sehen, den Sie von Ihrer .env-Datei aus mit der Datenbank verbinden möchten. Sie müssen den aktuellen Benutzer so ändern, dass er das in der letzten Version von mysql erforderliche Kennwort caching_sha2_password verwendet.

Hier ist dieser Befehl. 

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

Wenn Sie noch als Root-Benutzer angemeldet sind, müssen Sie diesen Befehl ausführen, damit Ihr Benutzer die erforderlichen Aufgaben ausführen kann, die für einen php artisan migrate zulässig sind. ZB: CREATE, DROP, ALTER, DELETE und so. 

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

Wenn dies nicht funktioniert, können Sie auch auswählen, welche Befehle Sie zulassen möchten, anstatt ihnen vollständigen Zugriff zu gewähren. 

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

Hoffe das hilft ~

7
poohbear

Server ist weg, ein MySQL-Fehler, diesen Link überprüfen

Vergewissern Sie sich, dass Ihr MySQL-Dienst tatsächlich ausgeführt wird, und dass Sie anschließend die richtigen Anmeldeinformationen für Ihre .env-Datei haben

Beim "Anfangsfehler" bei Migrationen müssen wir sehen, was im Migrationscode enthalten ist.

Bearbeiten: Da die Migrationen die Standardeinstellung von Laravel sind, liegt das Problem wahrscheinlich in der Verbindung zwischen Laravel und der Datenbank.

Um dies zu bestätigen:

  1. Erstellen Sie eine Datenbank manuell.
  2. Erstellen Sie eine Tabelle und platzieren Sie eine Zeile darin.
  3. Eine Route erstellen, die DB::statement('select * from tablejustcreated'); zurückgibt

Stellen Sie die Anforderung auf diese Route und wenn sie einfriert, boom, ist dies die Verbindung und höchstwahrscheinlich .env-Anmeldeinformationen (Benutzername und Kennwort, Host, Port).

1
abr

Vielen Dank an @poohhbear und allen anderen, die mir geholfen haben, das Problem zu beheben.

Was für mich tatsächlich funktioniert hat:

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

... vermutlich weil das neue MySQL standardmäßig caching_sha2_password war und PHP nicht wusste, wie es damit umgehen sollte.

0
Brendan White

Es ist ein bekannter Fehler in PHP 7.2.8. Downgrade auf PHP 7.2.7, bis es behoben ist.

Ich habe das gleiche Problem bei einem Upgrade von PHP 7.2.7 auf PHP 7.2.8 festgestellt.

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

0
fisharebest