Database Connection Refused or Timeout
The database server is not reachable or took too long to respond.
Explanation
Database connection refused or timeout occurs when the application cannot establish a connection to the database server within the allowed time. This can happen because the database server is down, the host/port configuration is incorrect, network connectivity is broken, or the server is overloaded and not accepting new connections. Unlike a simple connection refused, a timeout means the server was reachable but didn't respond in time, often indicating resource exhaustion or network issues.
Common Causes
- Database server is down
- Wrong host/port configuration
- Firewall blocking connection
- Server overloaded with connections
- Network connectivity issue
Solution
Verify the database server is running (systemctl status mysql, pg_isready, etc.). Check the connection configuration (host, port, credentials) in your application. Test connectivity with command-line tools: mysql -h host -u user -p or psql -h host -U user. Check firewall rules and security groups for the database port. Monitor server resource usage (CPU, memory, connections). Increase connection timeout values in the database configuration if appropriate. Implement connection pooling for high-traffic applications.
Code Example
// Laravel database connection test
try {
DB::connection()->getPdo();
echo "Connected successfully";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
// .env configuration
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=root
DB_PASSWORD=secret
DB_TIMEOUT=60 // custom timeout
// Test with command line
// mysql -h 127.0.0.1 -P 3306 -u root -p
// psql -h 127.0.0.1 -p 5432 -U postgres
// Connection pooling in Node.js
const mysql = require('mysql2');
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'secret',
database: 'myapp',
connectionLimit: 10,
connectTimeout: 60000,
});
Error Information
Language
php
Difficulty
Intermediate
Views
195
Related Errors
429
Backend
Rate Limit Exceeded (429)
Too many requests were sent in a given amount of time.
PHP
Undefined Variable
The code references a variable that has not been declared or assigned a value.
419
Laravel
TokenMismatchException (CSRF)
The CSRF token validation failed during a POST, PUT, or DELETE request.
PHP
Fatal Error: Uncaught Error
An unhandled Error exception was thrown that crashed the script.