PDOException: SQLSTATE connection refused
PHPでデータベース接続に失敗した場合のエラー
概要
PHPのPDOでデータベースに接続できない場合に発生する例外です。
エラーメッセージ
PDOException: SQLSTATE[HY000] [2002] Connection refused
または
PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost'
原因
- データベースサーバーが起動していない: MySQLやPostgreSQLが停止している
- 接続情報が間違っている: ホスト名、ポート、認証情報のミス
- ファイアウォールでブロック: ポートが開いていない
- ソケットファイルの問題: Unixソケットが見つからない
解決策
1. データベースサーバーの起動確認
| |
2. 接続情報の確認
| |
3. 127.0.0.1 を使用(localhost の代わりに)
| |
4. ソケットを明示的に指定
| |
5. ユーザー権限の確認
| |
6. Docker環境での接続
| |
7. .env ファイルの確認(Laravel)
| |
よくある間違い
- ローカル開発とDocker環境でホスト名が異なる
- ポート番号のデフォルト値を確認していない(MySQL: 3306, PostgreSQL: 5432)
- パスワードに特殊文字が含まれている場合のエスケープ
PHP の他のエラー
この記事は役に立ちましたか?