debug error koneksi ke database
This commit is contained in:
+6
-5
@@ -3,17 +3,18 @@
|
||||
// koneksi.php — Konfigurasi Database
|
||||
// ============================================
|
||||
|
||||
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
|
||||
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') ?: '');
|
||||
define('DB_NAME', getenv('DB_NAME') ?: 'webgis_spbu');
|
||||
define('DB_HOST', getenv('DB_HOST') ?: getenv('MYSQL_HOST') ?: 'localhost');
|
||||
define('DB_USER', getenv('DB_USER') ?: getenv('MYSQL_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') ?: getenv('MYSQL_PASSWORD') ?: getenv('MYSQL_ROOT_PASSWORD') ?: '');
|
||||
define('DB_NAME', getenv('DB_NAME') ?: getenv('MYSQL_DATABASE') ?: 'webgis_spbu');
|
||||
define('DB_PORT', (int) (getenv('DB_PORT') ?: getenv('MYSQL_PORT') ?: 3306));
|
||||
|
||||
// Mengaktifkan exception untuk mysqli agar error bisa ditangkap dengan try-catch
|
||||
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
|
||||
|
||||
function getConnection(): mysqli {
|
||||
try {
|
||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);
|
||||
$conn->set_charset('utf8mb4');
|
||||
return $conn;
|
||||
} catch (mysqli_sql_exception $e) {
|
||||
|
||||
+7
-5
@@ -12,17 +12,19 @@ echo "DB_HOST: " . (getenv('DB_HOST') ?: '(not set - will use fallback: localhos
|
||||
echo "DB_USER: " . (getenv('DB_USER') ?: '(not set - will use fallback: root)') . "\n";
|
||||
echo "DB_PASS: " . (getenv('DB_PASS') ? '***set***' : '(not set - will use empty string)') . "\n";
|
||||
echo "DB_NAME: " . (getenv('DB_NAME') ?: '(not set - will use fallback: webgis_spbu)') . "\n\n";
|
||||
echo "DB_PORT: " . (getenv('DB_PORT') ?: '(not set - will use fallback: 3306)') . "\n\n";
|
||||
|
||||
echo "=== KONEKSI TEST ===\n";
|
||||
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
|
||||
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') ?: '');
|
||||
define('DB_NAME', getenv('DB_NAME') ?: 'webgis_spbu');
|
||||
define('DB_HOST', getenv('DB_HOST') ?: getenv('MYSQL_HOST') ?: 'localhost');
|
||||
define('DB_USER', getenv('DB_USER') ?: getenv('MYSQL_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') ?: getenv('MYSQL_PASSWORD') ?: getenv('MYSQL_ROOT_PASSWORD') ?: '');
|
||||
define('DB_NAME', getenv('DB_NAME') ?: getenv('MYSQL_DATABASE') ?: 'webgis_spbu');
|
||||
define('DB_PORT', (int) (getenv('DB_PORT') ?: getenv('MYSQL_PORT') ?: 3306));
|
||||
|
||||
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
|
||||
|
||||
try {
|
||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);
|
||||
$conn->set_charset('utf8mb4');
|
||||
echo "KONEKSI: BERHASIL!\n";
|
||||
echo "Host: " . DB_HOST . "\n";
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
if (PHP_SAPI !== 'cli') {
|
||||
http_response_code(403);
|
||||
echo "This script must be run from the CLI.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require __DIR__ . '/../backend/koneksi.php';
|
||||
|
||||
$db = getConnection();
|
||||
|
||||
$statements = [
|
||||
"CREATE TABLE IF NOT EXISTS spbu (
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
no_spbu VARCHAR(50) NOT NULL,
|
||||
status ENUM('24jam', 'tidak') NOT NULL DEFAULT 'tidak',
|
||||
latitude DECIMAL(10, 8) NOT NULL,
|
||||
longitude DECIMAL(11, 8) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS jalan (
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
nama_jalan VARCHAR(150) NOT NULL,
|
||||
status ENUM('Nasional', 'Provinsi', 'Kabupaten') NOT NULL,
|
||||
panjang DECIMAL(10, 2) NOT NULL,
|
||||
geom LONGTEXT NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS parsil (
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
nama_pemilik VARCHAR(150) NOT NULL,
|
||||
status ENUM('SHM', 'HGB', 'HGU', 'HP') NOT NULL,
|
||||
luas DECIMAL(12, 2) NOT NULL,
|
||||
geom LONGTEXT NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS rumah_ibadah (
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
alamat TEXT NOT NULL,
|
||||
latitude DECIMAL(10, 8) NOT NULL,
|
||||
longitude DECIMAL(11, 8) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS penduduk_miskin (
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
nama_kk VARCHAR(150) NOT NULL,
|
||||
keterangan TEXT,
|
||||
latitude DECIMAL(10, 8) NOT NULL,
|
||||
longitude DECIMAL(11, 8) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS users (
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||
];
|
||||
|
||||
foreach ($statements as $statement) {
|
||||
$db->query($statement);
|
||||
}
|
||||
|
||||
$adminPassword = getenv('ADMIN_PASSWORD') ?: 'admin123';
|
||||
$adminHash = password_hash($adminPassword, PASSWORD_DEFAULT);
|
||||
|
||||
$adminResult = $db->query("SELECT password FROM users WHERE username = 'admin' LIMIT 1");
|
||||
if ($adminResult->num_rows === 0) {
|
||||
$stmt = $db->prepare("INSERT INTO users (username, password) VALUES ('admin', ?)");
|
||||
$stmt->bind_param('s', $adminHash);
|
||||
$stmt->execute();
|
||||
} else {
|
||||
$currentHash = (string) $adminResult->fetch_assoc()['password'];
|
||||
if (!password_verify($adminPassword, $currentHash)) {
|
||||
$stmt = $db->prepare("UPDATE users SET password = ? WHERE username = 'admin'");
|
||||
$stmt->bind_param('s', $adminHash);
|
||||
$stmt->execute();
|
||||
}
|
||||
}
|
||||
|
||||
$count = (int) $db->query('SELECT COUNT(*) AS total FROM spbu')->fetch_assoc()['total'];
|
||||
if ($count === 0) {
|
||||
$seed = $db->prepare(
|
||||
"INSERT INTO spbu (nama, no_spbu, status, latitude, longitude)
|
||||
VALUES (?, ?, ?, ?, ?)"
|
||||
);
|
||||
|
||||
$rows = [
|
||||
['SPBU Sudirman', '64.751.01', '24jam', -0.0260000, 109.3425000],
|
||||
['SPBU Ahmad Yani', '64.751.02', 'tidak', -0.0310000, 109.3218000],
|
||||
['SPBU Sutan Syahrir', '64.751.03', '24jam', -0.0195000, 109.3612000],
|
||||
];
|
||||
|
||||
foreach ($rows as [$name, $number, $status, $latitude, $longitude]) {
|
||||
$seed->bind_param('sssdd', $name, $number, $status, $latitude, $longitude);
|
||||
$seed->execute();
|
||||
}
|
||||
}
|
||||
|
||||
echo "Database initialized successfully.\n";
|
||||
echo "Admin username: admin\n";
|
||||
echo "Admin password: {$adminPassword}\n";
|
||||
Reference in New Issue
Block a user