> 進行故障排除之前,讓我們檢查功能性的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服務>忽略定義是一個頻繁的監督。 上面的工作流程證明了正確的包含。 沒有它,連接失敗了。
3。 mysql不可用services
即使定義了服務,MySQL也可能不會立即響應。服務定義中的參數至關重要:>
>這確保工作流程等待,直到MySQL準備就緒為止。 沒有此,測試可能會過早運行,從而導致連接錯誤。 options
>
mysql
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
>本指南涵蓋了“ sqlstate [hy000] [2002]連接的三個關鍵原因,拒絕了github Actions laravel/mysql工作流中的錯誤。 解決端口映射,服務定義和MYSQL準備就緒可確保CI過程更順暢。 對於生產應用穩定性,請考慮與Laravel很好地集成的HoneyBadger等強大的錯誤監視工具。
以上是如何修復' sqlstate [hy000] [2002]連接拒絕' github動作中的laravel錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!