"ALTER TABLE `matches` DROP FOREIGN KEY `fk_match_team1`", 'DROP FK fk_match_team2' => "ALTER TABLE `matches` DROP FOREIGN KEY `fk_match_team2`", 'DEFAULT Platform' => "ALTER TABLE `matches` MODIFY COLUMN `Platform` VARCHAR(50) NOT NULL DEFAULT 'PC'", 'DEFAULT MatchType' => "ALTER TABLE `matches` MODIFY COLUMN `MatchType` VARCHAR(50) NOT NULL DEFAULT 'przyjacielski'", 'ADD EndTime' => "ALTER TABLE `matches` ADD COLUMN `EndTime` DATETIME NULL AFTER `StartTime`", 'ADD Score' => "ALTER TABLE `matches` ADD COLUMN `Score` VARCHAR(50) NULL AFTER `Status`", 'ADD WinnerId' => "ALTER TABLE `matches` ADD COLUMN `WinnerId` BIGINT UNSIGNED NULL AFTER `Score`", 'ADD LoserId' => "ALTER TABLE `matches` ADD COLUMN `LoserId` BIGINT UNSIGNED NULL AFTER `WinnerId`", ]; foreach ($steps as $label => $sql) { try { $pdo->exec($sql); $log[] = ['ok', $label, 'OK']; } catch (PDOException $e) { $msg = $e->getMessage(); // Ignorujemy: "Can't DROP" (nie istnieje) i "Duplicate column name" if (strpos($msg, "Can't DROP") !== false || strpos($msg, 'Duplicate column name') !== false || strpos($msg, 'already exists') !== false) { $log[] = ['skip', $label, 'Pominieto (juz OK): ' . $msg]; } else { $log[] = ['err', $label, 'BLAD: ' . $msg]; } } } $done = true; } // Diagnostics $diag = []; try { $fks = $pdo->query( "SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'matches' AND REFERENCED_TABLE_NAME IS NOT NULL ORDER BY CONSTRAINT_NAME" )->fetchAll(PDO::FETCH_ASSOC); $diag['fks'] = $fks; } catch (Exception $e) { $diag['fks_err'] = $e->getMessage(); } try { $cols = $pdo->query( "SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM information_schema.columns WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'matches' ORDER BY ORDINAL_POSITION" )->fetchAll(PDO::FETCH_ASSOC); $diag['cols'] = $cols; } catch (Exception $e) { $diag['cols_err'] = $e->getMessage(); } try { $mrCount = $pdo->query("SELECT COUNT(*) FROM match_results")->fetchColumn(); $diag['match_results_count'] = (int)$mrCount; } catch (Exception $e) { $diag['match_results_err'] = $e->getMessage(); } try { $mCount = $pdo->query("SELECT COUNT(*) FROM matches")->fetchColumn(); $diag['matches_count'] = (int)$mCount; } catch (Exception $e) { $diag['matches_err'] = $e->getMessage(); } function esc($s) { return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } ?>
Gotowe! Mozesz sprawdzic diagnostyke ponizej.
=esc($diag['fks_err'])?>
Brak FK constraints (juz ok).
| CONSTRAINT_NAME | COLUMN_NAME | REFERENCED_TABLE |
|---|---|---|
| =esc($r['CONSTRAINT_NAME'])?> | =esc($r['COLUMN_NAME'])?> | =esc($r['REFERENCED_TABLE_NAME'])?> |
=esc($diag['cols_err'])?>
| COLUMN_NAME | TYPE | NULLABLE | DEFAULT |
|---|---|---|---|
| =esc($r['COLUMN_NAME'])?> | =esc($r['COLUMN_TYPE'])?> | =esc($r['IS_NULLABLE'])?> | =esc($r['COLUMN_DEFAULT'] ?? 'NULL')?> |
matches: =esc($diag['matches_count'] ?? ($diag['matches_err'] ?? '?'))?>
match_results: =esc($diag['match_results_count'] ?? ($diag['match_results_err'] ?? '?'))?>
| id | match_key | discipline | winner | loser | score | reason | ended_at |
|---|---|---|---|---|---|---|---|
| ' . esc($v) . ' | '; echo '
' . esc($e->getMessage()) . '
'; } ?>