Heim >Backend-Entwicklung >PHP-Tutorial >So beheben
GitHub -Aktionen rationalisieren die kontinuierliche Integration (CI) für Github -Repositories. YAML -Workflow -Dateien automatisieren Aufgaben wie Tests und Bereitstellung. Eine übliche Laravel/MySQL -CI -Haken ist der Fehler "SQLState [Hy000] [2002] -Fehler", der häufig während anfänglicher Testmigrationen auftaucht. Dieser Artikel untersucht drei häufige Ursachen und ihre Lösungen.
Ein gültiger GitHub -Aktionen Workflow (Beispiel)
Vor der Fehlerbehebung untersuchen wir einen funktionalen Laravel/MySQL -Github -Aktionen Workflow:
name: Run tests on: [push] jobs: tests: name: Run tests runs-on: ubuntu-latest services: mysql: image: mysql:8 env: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: testing ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - uses: actions/checkout@v4 with: fetch-depth: 1 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 8.3 - name: Run composer install run: composer install -n --prefer-dist - name: Prepare Laravel Application run: | cp .env.ci .env php artisan key:generate - name: Run tests run: php artisan test
.env.ci
:
<code>DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=testing DB_USERNAME=root DB_PASSWORD=password</code>
1. Falscher MySQL -Port
Der häufigste Schuldige: nicht übereinstimmende Portnummern. GitHub -Aktionen weist dem Service Container 3306
einen zufälligen Port zu.
${{ job.services.mysql.ports['3306'] }}
: - name: Run tests run: php artisan test env: DB_PORT: ${{ job.services.mysql.ports['3306'] }}
33306
) sowohl im Workflow als auch im .env.ci
. 2. Fehlende MySQL -Dienst
Die Definition services
übersehen ist eine häufige Aufsicht. Der obige Workflow zeigt die korrekte Aufnahme. Ohne sie schlägt die Verbindung fehl.
3. MySQL Nichtverfügbarkeit
Auch wenn ein Dienst definiert ist, ist MySQL möglicherweise nicht sofort reagiert. Der Parameter options
in der mysql
-Servierungsdefinition ist entscheidend:
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
Dies stellt sicher, dass der Workflow wartet, bis MySQL vor dem Fortfahren fertig ist. Ohne dies können Tests vorzeitig ausgeführt werden, was zum Verbindungsfehler führt.
Schlussfolgerung
Diese Anleitung deckt drei Hauptgründe für den Fehler "SQLState [Hy000] [2002] abgelehnt" Fehler in Github -Aktionen Laravel/MySQL -Workflows ab. Adressierung von Port -Zuordnung, Servicedefinition und MySQL -Bereitschaft sorgt für glattere CI -Prozesse. Betrachten Sie für die Produktionsanwendungsstabilität eine robuste Fehlerüberwachungstools wie HoneyBadger, die sich gut in Laravel integrieren.
Das obige ist der detaillierte Inhalt vonSo beheben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!