Files
sam-kd/geoattendance/fix_geo_db.php

54 lines
1.9 KiB
PHP

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo "Starting Geo Attendance DB Fix...\n";
try {
// Define DOCUMENT_ROOT if not set (for CLI execution)
if (!isset($_SERVER['DOCUMENT_ROOT']) || empty($_SERVER['DOCUMENT_ROOT'])) {
$_SERVER['DOCUMENT_ROOT'] = dirname(__DIR__); // Assumes script is in /geoattendance/
}
// Include mydb.php
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
try {
// Try connecting using the standard application logic (loads .env)
$pdo = db_connect();
echo "Connected via db_connect() (standard).\n";
} catch (Exception $e) {
echo "Standard connection failed. Trying local fallback...\n";
// Fallback for Local Development (CLI) where .env might have internal Docker hostnames
$dsn = "mysql:host=127.0.0.1;dbname=chandj;charset=utf8";
$pdo = new PDO($dsn, 'root', 'root');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected via Local Fallback (127.0.0.1).\n";
}
// 1. Check for ID 0 and move it if exists
// We use a subquery to find a safe new ID
echo "Checking for ID 0...\n";
$stmt = $pdo->query("SELECT count(*) FROM geo_attendance WHERE id = 0");
if ($stmt->fetchColumn() > 0) {
echo " - Found row with ID 0. Moving it to a new ID...\n";
// Calculate max id + 1
$stmt = $pdo->query("SELECT MAX(id) FROM geo_attendance");
$maxId = $stmt->fetchColumn();
$newId = ($maxId > 0 ? $maxId : 0) + 1;
$pdo->exec("UPDATE geo_attendance SET id = $newId WHERE id = 0");
echo " - ID 0 moved to $newId.\n";
}
// 2. Apply AUTO_INCREMENT
echo "Applying AUTO_INCREMENT to 'id' column...\n";
$sql = "ALTER TABLE geo_attendance MODIFY id INT NOT NULL AUTO_INCREMENT";
$pdo->exec($sql);
echo " - Success! 'geo_attendance.id' is now AUTO_INCREMENT.\n";
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}
?>