81 lines
2.3 KiB
PHP
81 lines
2.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Script untuk test koneksi database
|
|
* Usage: php bin/test_db_connection.php
|
|
*/
|
|
|
|
require __DIR__ . '/../vendor/autoload.php';
|
|
|
|
use App\Config\AppConfig;
|
|
use App\Support\Database;
|
|
|
|
// Load environment variables
|
|
AppConfig::loadEnv(__DIR__ . '/..');
|
|
|
|
echo "=== Test Koneksi Database ===\n\n";
|
|
|
|
// Get database connection
|
|
$dbHost = AppConfig::get('DB_HOST', 'localhost');
|
|
$dbName = AppConfig::get('DB_NAME', '');
|
|
$dbUser = AppConfig::get('DB_USER', '');
|
|
$dbPass = AppConfig::get('DB_PASS', '');
|
|
|
|
echo "Konfigurasi Database:\n";
|
|
echo " Host: {$dbHost}\n";
|
|
echo " Database: {$dbName}\n";
|
|
echo " User: {$dbUser}\n";
|
|
echo " Password: " . (empty($dbPass) ? '(kosong)' : str_repeat('*', strlen($dbPass))) . "\n\n";
|
|
|
|
if (empty($dbName) || empty($dbUser)) {
|
|
echo "❌ Error: Database credentials tidak lengkap di .env\n";
|
|
echo " Pastikan DB_NAME dan DB_USER sudah di-set\n";
|
|
exit(1);
|
|
}
|
|
|
|
try {
|
|
echo "Mencoba koneksi ke database...\n";
|
|
$db = Database::getConnection($dbHost, $dbName, $dbUser, $dbPass);
|
|
|
|
echo "✅ Koneksi database BERHASIL!\n\n";
|
|
|
|
// Test query sederhana
|
|
echo "Test query sederhana...\n";
|
|
$stmt = $db->query("SELECT VERSION() as version, DATABASE() as current_db, NOW() as server_time");
|
|
$result = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
echo " MySQL Version: {$result['version']}\n";
|
|
echo " Current Database: {$result['current_db']}\n";
|
|
echo " Server Time: {$result['server_time']}\n\n";
|
|
|
|
// Cek tabel yang ada
|
|
echo "Mengecek tabel yang ada...\n";
|
|
$stmt = $db->query("SHOW TABLES");
|
|
$tables = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
|
|
|
if (empty($tables)) {
|
|
echo " ⚠️ Tidak ada tabel di database ini\n";
|
|
} else {
|
|
echo " ✅ Ditemukan " . count($tables) . " tabel:\n";
|
|
foreach ($tables as $table) {
|
|
echo " - {$table}\n";
|
|
}
|
|
}
|
|
|
|
echo "\n=== Test Selesai ===\n";
|
|
|
|
} catch (\PDOException $e) {
|
|
echo "❌ Error: Koneksi database GAGAL!\n";
|
|
echo " Pesan Error: " . $e->getMessage() . "\n";
|
|
echo "\nKemungkinan penyebab:\n";
|
|
echo " 1. Database server tidak berjalan\n";
|
|
echo " 2. Host/Port salah\n";
|
|
echo " 3. Username/Password salah\n";
|
|
echo " 4. Database tidak ada\n";
|
|
echo " 5. User tidak punya akses ke database\n";
|
|
exit(1);
|
|
}
|
|
|