Problème de connexion MySQL avec Laravel Sail Docker
P粉949190972
P粉949190972 2023-08-27 00:43:45
0
1
580
<p>J'essaie d'accéder à une base de données via une application Laravel déployée dans un conteneur Docker, mais je reçois le message d'erreur suivant : </p> <pre class="brush:php;toolbar:false;">SQLSTATE[HY000] [2002] Connexion refusée SELECT * FROM `posts`</pre> <p>Il existe une table appelée posts dans la base de données à laquelle j'essaie d'accéder depuis localhost/posts.</p> <p>/posts的Blade模板如下:</p> <pre class="brush:php;toolbar:false;">@extends('app') @section('contenu') <h1>Page d'index des publications</h1> @forelse ($posts en tant que $post) <h2>{{ $post->title }}</h2> @vide <h2>Aucun message !</h2> @endforelse @endsection</pre> <p>负责/posts的web.php中的路由如下:</p> <pre class="brush:php;toolbar:false;">Route::resource('/posts', PostController::class)->only(['index', 'store']);< /pré> <p>PostController的index函数如下:</p> <pre class="brush:php;toolbar:false;">index de fonction publique() { $posts = Post::all(); return view('posts.index', compact('posts')); }</pré> <p>我的.env文件如下:</p> <pre class="brush:php;toolbar:false;">APP_NAME=Laravel APP_ENV=local APP_KEY=base64:1HEk/HaN8IL/wV8q4DCzpvmM/cYRDvGAIe+0DxS9ggo= APP_DEBUG=vrai APP_URL=http://localhost LOG_CHANNEL=pile LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=débogage DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3307 DB_DATABASE=laravel_essentials_app DB_USERNAME=voile DB_PASSWORD=mot de passe BROADCAST_DRIVER=journal CACHE_DRIVER=fichier FILESYSTEM_DISK=local QUEUE_CONNECTION=synchronisation SESSION_DRIVER=fichier SESSION_LIFETIME=120 MEMCACHED_HOST=memcached REDIS_HOST=redis REDIS_PASSWORD = nul REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 MAIL_USERNAME = nul MAIL_PASSWORD = nul MAIL_ENCRYPTION = nul MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_HOST= PUSHER_PORT=443 PUSHER_SCHEME=https PUSHER_APP_CLUSTER=mt1 VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" VITE_PUSHER_HOST="${PUSHER_HOST}" VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"</pre> <p>我的docker-compose.yml文件如下:</p> <pre class="brush:php;toolbar:false;"># Pour plus d'informations : https://laravel.com/docs/sail version : '3' prestations de service: laravel.test : construire: contexte : ./vendor/laravel/sail/runtimes/8.1 fichier docker : fichier Docker arguments : GROUPE WWW : '${WWWGROUP}' image : voile-8.1/application hôtes_extra : - 'host.docker.internal:host-gateway' ports : - '${APP_PORT:-80}:80' - '${VITE_PORT:-5173} :${VITE_PORT:-5173}' environnement: UTILISATEUR WWW : '${WWWUSER}' LARAVEL_SAIL : 1 XDEBUG_MODE : '${SAIL_XDEBUG_MODE:-off}' XDEBUG_CONFIG : '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}' tomes : - '.:/var/www/html' réseaux : - naviguer dépend de: -mysql - redis mysql : image : 'mysql/mysql-server:8.0' ports : - '${FORWARD_DB_PORT:-3307}:3306' environnement: MYSQL_ROOT_PASSWORD : '${DB_PASSWORD}' MYSQL_ROOT_HOST : "${DB_HOST}" MYSQL_DATABASE : '${DB_DATABASE}' MYSQL_USER : '${DB_USERNAME}' MYSQL_PASSWORD : '${DB_PASSWORD}' MYSQL_ALLOW_EMPTY_PASSWORD : 1 tomes : - 'voile-mysql:/var/lib/mysql' - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' réseaux : - naviguer Bilan de santé: test : ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"] tentatives : 3 délai d'attente : 5 s redis : image : 'redis:alpine' ports : - '${FORWARD_REDIS_PORT:-6379}:6379' tomes : - 'voile-redis :/données' réseaux : - naviguer Bilan de santé: test : ["CMD", "redis-cli", "ping"] tentatives : 3 délai d'attente : 5 s réseaux : naviguer: pilote : pont tomes : voile-mysql : chauffeur : local voile-redis : pilote : local</pre> <p>因。</p> <p> <p> <p><strong>解决方案</strong> 通过将.env中的DB_HOST更改为mysql,同时将DB_PORT更改为3306来解决问题。</p> <p><strong>编辑后的.env文件</strong></p> <pre class="brush:php;toolbar:false;">DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=laravel_essentials_app DB_USERNAME=voile DB_PASSWORD=mot de passe</pre></p>
P粉949190972
P粉949190972

répondre à tous(1)
P粉547420474

Définissez la valeur de DB_HOST sur mysql

dans votre fichier .env
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal