ホームページ >バックエンド開発 >PHPチュートリアル >「SQLSTATE [HY000] [2002]接続を修正する方法GitHubアクションで「Laravelエラー」を拒否しました

「SQLSTATE [HY000] [2002]接続を修正する方法GitHubアクションで「Laravelエラー」を拒否しました

Karen Carpenter
Karen Carpenterオリジナル
2025-03-06 02:29:12662ブラウズ

How to fix

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
  • 2。 mysqlサービスがありません

定義を見下ろすことは、頻繁に監視されます。 上記のワークフローは、正しい包含を示しています。 それがなければ、接続が失敗します。

services3。 MySQL Unabailability サービスが定義されていても、MySQLはすぐに応答しない可能性があります。サービス定義の

パラメーターは重要です: これにより、進行する前にMySQLが準備ができるまでワークフローが待機することが保証されます。 これがなければ、テストは時期尚早に実行され、接続エラーが発生する可能性があります。

結論optionsmysql このガイドは、「SQLSTATE [HY000] [2002]接続が拒否された「sqlState [HY000] [2002]の3つの重要な理由をカバーしています。 ポートマッピング、サービスの定義、MySQLの準備に対処することで、よりスムーズなCIプロセスが保証されます。 生産アプリケーションの安定性については、Laravelとうまく統合するHoneybadgerなどの堅牢なエラー監視ツールを検討してください。

以上が「SQLSTATE [HY000] [2002]接続を修正する方法GitHubアクションで「Laravelエラー」を拒否しましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。