Rumah >pembangunan bahagian belakang >tutorial php >Cara Memperbaiki 'SQLSTATE [HY000] [2002] Sambungan menolak' Kesalahan Laravel dalam Tindakan GitHub

Cara Memperbaiki 'SQLSTATE [HY000] [2002] Sambungan menolak' Kesalahan Laravel dalam Tindakan GitHub

Karen Carpenter
Karen Carpenterasal
2025-03-06 02:29:12654semak imbas

How to fix

Tindakan GitHub menyelaraskan integrasi berterusan (CI) untuk repositori GitHub. Fail aliran kerja YAML mengautomasikan tugas seperti ujian dan penempatan. Sambungan Laravel/MySQL CI yang biasa adalah "SQLSTATE [HY000] [2002] sambungan menolak" kesilapan, sering ditanam semasa migrasi ujian awal. Artikel ini meneroka tiga sebab yang kerap dan penyelesaiannya.

aliran kerja GitHub yang sah (contoh)

Sebelum menyelesaikan masalah, mari kita periksa aliran kerja Laravel/MySQL GitHub yang berfungsi:

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. Port MySQL yang salah

Punca yang paling biasa: Nombor port yang tidak sesuai. Tindakan GitHub menyerahkan port rawak ke kontena perkhidmatan

. 3306

  • port dinamik: akses port yang ditetapkan menggunakan : ${{ job.services.mysql.ports['3306'] }}
- name: Run tests
  run: php artisan test
  env:
    DB_PORT: ${{ job.services.mysql.ports['3306'] }}
  • port hardcoded: secara eksplisit menentukan port (mis., ) dalam kedua -dua alur kerja dan 33306. .env.ci
2. Hilang Perkhidmatan MySQL

Menghadap definisi

adalah pengawasan yang kerap. Aliran kerja di atas menunjukkan kemasukan yang betul. Tanpa itu, sambungan gagal.

services

3. MySQL Ketidakhadiran

Walaupun dengan perkhidmatan yang ditakrifkan, MySQL mungkin tidak segera responsif. Parameter

dalam definisi perkhidmatan

adalah penting: options mysql

Ini memastikan aliran kerja menunggu sehingga MySQL siap sebelum meneruskan. Tanpa ini, ujian mungkin berjalan lebih awal, mengakibatkan ralat sambungan.
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

Kesimpulan

Panduan ini meliputi tiga sebab utama untuk sambungan "SQLSTATE [HY000] [2002] menolak" kesilapan dalam tindakan GitHub Laravel/MySQL. Menangani pemetaan pelabuhan, definisi perkhidmatan, dan kesediaan MySQL memastikan proses CI yang lebih lancar. Untuk kestabilan aplikasi pengeluaran, pertimbangkan alat pemantauan ralat yang teguh seperti Honeybadger, yang mengintegrasikan dengan baik dengan Laravel.

Atas ialah kandungan terperinci Cara Memperbaiki 'SQLSTATE [HY000] [2002] Sambungan menolak' Kesalahan Laravel dalam Tindakan GitHub. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn