Une histoire sur une erreur lors de la migration dans docker PHP Laravel

Une histoire de blocage avec une erreur lors de la migration dans Docker (Laravel)

Voici le contenu de l'erreur

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.

En conclusion, il semble que les paramètres de docker-compose.yml et .env mysql doivent être les mêmes.

Solution

Vérifiez si .env sous laravel (app /) existe -> Le nom d'hôte doit correspondre au nom du conteneur du docker Besoin de changer s'il y a une différence dans le contenu de docker-compose.yml Après le changement

docker


docker-compose stop
docker-compose up -d

Il faut faire Raison: le redémarrage ne reflète pas les paramètres de docker-compose.yml Si vous souhaitez refléter les paramètres de .env

terminal


php artisan config:cache

Besoin d'être reflété dans

Cause (note supplémentaire)

Apparemment, le conteneur d'application où laravel est facturé-> le conteneur de base de données où mysql est construit Il semble qu'une erreur se soit produite lors de la communication entre eux, Lors de la communication entre des conteneurs docker, saisissez l'adresse IP donnée au conteneur dans lequel mysql est construit. Il faut utiliser

terminal


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

Vous pouvez vérifier l'adresse IP du conteneur avec Vous devez vérifier si l'adresse IP hôte de .env sous l'application est la même.

Recommended Posts

Une histoire sur une erreur lors de la migration dans docker PHP Laravel
[Docker] Une histoire sur une erreur dans la composition de docker
Quand je bcrypt avec node + docker, j'ai une erreur
Lorsque j'ai installé npm sur Laravel Homestead, une erreur s'est produite lors de la correspondance avec la valeur de la somme de contrôle.
Une histoire bloquée avec NotSerializableException
Une solution aux erreurs Docker dans lesquelles les débutants ont tendance à rester coincés
L'histoire que Tomcat a souffert d'une erreur de timeout dans Eclipse
Une histoire qui résout le problème que REMOTE_ADDR ne peut pas être acquis dans un cluster construit avec Docker Swarm + Traefik (1.7).
Ligne de commande qui vous permet de créer une structure de répertoires pour créer un environnement Laravel avec Docker en une seule fois
Quand j'ai essayé de créer un environnement pour PHP7.4 + Apache + MySQL avec Docker, je suis resté bloqué [Windows & Mac]
L'histoire de la rencontre d'un débordement arithmétique qui ne devrait pas être rencontré dans Ruby
Lors de l'introduction de JOOQ dans Spring Boot, une histoire qui a été traitée parce qu'une erreur s'est produite autour de Liquidbase
[Partie 1] Création d'un conteneur Docker qui fournit Markdown en HTML avec Apache / Pandoc
Coincé devant le forgeron par enum
Installez simplement Laravel 8 sur le docker dans l'environnement PHP8
Webdrivers :: BrowserNotFound: Impossible de trouver le binaire Chrome. Lorsque j'ai essayé pour la première fois de tester E2E avec Docker + Rails, je suis resté coincé dans une erreur.
Erreur de migration après avoir associé Activerecord dans l'environnement Rails5 + Docker (2)
[PHP] Histoire de la sortie de PDF avec TCPDF + FPDI
Créez un environnement de développement Docker + Laravel PHP + Vue.js en 5 minutes
Erreur de migration après l'association Activerecord dans l'environnement Rails5 + Docker
Erreur de valeur de vérification survenue dans l'environnement de clustering
[Note] Créez un environnement Python3 avec Docker dans EC2
J'ai eu une erreur "méthode non définie` create" "dans RSpec
Implémentez rapidement singleton avec enum en Java
Je suis resté coincé dans un clone d'un tableau à deux dimensions
Une histoire que j'ai réalisé que je devais étudier en premier lieu en tant qu'ingénieur