Eine Geschichte über einen Fehler während der Migration in Docker PHP Laravel

Eine Geschichte über das Feststecken eines Fehlers während der Migration in Docker (Laravel)

Das Folgende ist der Fehlerinhalt

terminal


SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select * from information_schema.tables where table_schema = db_name and table_name = migrations and table_type = 'BASE TABLE')

  at /var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
    665|         // If an exception occurs when attempting to run a query, we'll format the error
    666|         // message to include the bindings with SQL, which will make this exception a
    667|         // lot more helpful to the developer instead of just the database's errors.
    668|         catch (Exception $e) {
  > 669|             throw new QueryException(
    670|                 $query, $this->prepareBindings($bindings), $e
    671|             );
    672|         }
    673|

  Exception trace:

  1   PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known")
      /var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=mysql;port=3306;dbname=db_name", "db_user", "db_password", [])
      /var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  Please use the argument -v to see more details.

Zusammenfassend scheint es, dass die Einstellungen für docker-compose.yml und .env mysql identisch sein müssen.

Lösung

Überprüfen Sie, ob .env unter laravel (app /) vorhanden ist-> Der Hostname muss mit dem Containernamen des Dockers übereinstimmen Muss geändert werden, wenn es einen Unterschied im Inhalt von docker-compose.yml gibt Nach der Änderung

docker


docker-compose stop
docker-compose up -d

Es ist notwendig zu tun Grund: Der Neustart spiegelt nicht die Einstellungen von docker-compose.yml wider Wenn Sie die Einstellungen von .env widerspiegeln möchten

terminal


php artisan config:cache

Muss reflektiert werden in

Ursache (zusätzlicher Hinweis)

Anscheinend der App-Container, in dem Laravel abgerechnet wird-> der DB-Container, in dem MySQL erstellt wird Es scheint, dass bei der Kommunikation ein Fehler aufgetreten ist. Geben Sie bei der Kommunikation zwischen Docker-Containern die IP-Adresse des Containers ein, in dem MySQL erstellt wurde. Es ist notwendig zu verwenden

terminal


cat /etc/hosts | awk ‘END{print $1}’ | sed -r -e ‘s/[0-9]+$/1/g’

Sie können die IP-Adresse des Containers mit überprüfen Sie sollten überprüfen, ob die Host-IP von .env unter der App identisch ist.

Recommended Posts

Eine Geschichte über einen Fehler während der Migration in Docker PHP Laravel
[Docker] Eine Geschichte über einen Fehler beim Erstellen von Docker
Beim Verschlüsseln mit Node + Docker wurde eine Fehlermeldung angezeigt
Bei der Installation von npm auf Laravel Homestead ist beim Abgleichen des Prüfsummenwerts ein Fehler aufgetreten.
Eine Geschichte, die bei NotSerializableException steckt
Eine Lösung für Docker-Fehler, bei denen Anfänger häufig stecken bleiben
Die Geschichte, dass Tomcat in Eclipse unter einem Timeout-Fehler litt
Eine Geschichte, die sich mit dem Problem befasst, dass REMOTE_ADDR nicht in einem mit Docker Swarm + Traefik (1.7) erstellten Cluster erworben werden kann.
Befehlszeile, mit der Sie eine Verzeichnisstruktur zum Erstellen einer Laravel-Umgebung mit Docker auf einmal erstellen können
Als ich versuchte, mit Docker eine Umgebung für PHP7.4 + Apache + MySQL zu erstellen, blieb ich stecken [Windows & Mac]
Die Geschichte eines arithmetischen Überlaufs, der in Ruby nicht auftreten sollte
Bei der Einführung von JOOQ in Spring Boot wurde eine Geschichte behandelt, die behandelt wurde, weil bei Liquidbase ein Fehler aufgetreten ist
[Teil 1] Erstellen eines Docker-Containers, der mit Apache / Pandoc Markdown in HTML liefert
Von enum vor dem Schmied festgefahren
Installieren Sie einfach Laravel 8 auf dem Docker in der PHP8-Umgebung
Webdrivers :: BrowserNotFound: Chrome-Binärdatei konnte nicht gefunden werden. Als ich zum ersten Mal versuchte, E2E mit Docker + Rails zu testen, war ein Fehler aufgetreten.
Migrationsfehler nach dem Zuordnen von Activerecord in der Rails5 + Docker-Umgebung (2)
[PHP] Geschichte der Ausgabe von PDF mit TCPDF + FPDI
Erstellen Sie die Entwicklungsumgebung von Docker + Laravel PHP + Vue.j in 5 Minuten
Migrationsfehler nach Activerecord-Zuordnung in der Rails5 + Docker-Umgebung
Überprüfungswertfehler, der in der Clusterumgebung aufgetreten ist
[Hinweis] Erstellen Sie eine Python3-Umgebung mit Docker in EC2
Ich habe in RSpec den Fehler "undefined method` create '" erhalten
Implementieren Sie Singleton mit Enum schnell in Java
Ich steckte in einem Klon eines zweidimensionalen Arrays fest
Eine Geschichte, die mir klar wurde, dass ich überhaupt als Ingenieur studieren musste