ホームページ >バックエンド開発 >PHPチュートリアル >「SQLSTATE [HY000] [2002]接続を修正する方法GitHubアクションで「Laravelエラー」を拒否しました
GitHubアクションは、GitHubリポジトリの連続統合(CI)を合理化します。 YAMLワークフローファイルは、テストや展開などのタスクを自動化します。 一般的なlaravel/mysql ci senagは、「sqlstate [hy000] [2002]接続が拒否され、最初のテスト移行中にしばしば発生するエラーを拒否しました。 この記事では、3つの頻繁な原因とその解決策を調査します
有効なgithubアクションワークフロー(例)
トラブルシューティングの前に、機能的なlaravel/mysql githubアクションワークフローを調べてみましょう:
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。誤ったmysqlポート
最も一般的な犯人:ポート番号が不一致。 githubアクションは、ランダムなポートをサービスコンテナのに割り当てます。
3306
${{ job.services.mysql.ports['3306'] }}
- name: Run tests run: php artisan test env: DB_PORT: ${{ job.services.mysql.ports['3306'] }}
33306
.env.ci
定義を見下ろすことは、頻繁に監視されます。 上記のワークフローは、正しい包含を示しています。 それがなければ、接続が失敗します。
services
3。 MySQL Unabailability サービスが定義されていても、MySQLはすぐに応答しない可能性があります。サービス定義の
パラメーターは重要です: これにより、進行する前にMySQLが準備ができるまでワークフローが待機することが保証されます。 これがなければ、テストは時期尚早に実行され、接続エラーが発生する可能性があります。
結論options
mysql
このガイドは、「SQLSTATE [HY000] [2002]接続が拒否された「sqlState [HY000] [2002]の3つの重要な理由をカバーしています。 ポートマッピング、サービスの定義、MySQLの準備に対処することで、よりスムーズなCIプロセスが保証されます。 生産アプリケーションの安定性については、Laravelとうまく統合するHoneybadgerなどの堅牢なエラー監視ツールを検討してください。
以上が「SQLSTATE [HY000] [2002]接続を修正する方法GitHubアクションで「Laravelエラー」を拒否しましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。