prepare('SHOW TABLES LIKE ?'); $stmt->execute([$table]); if ($stmt->fetchColumn() === false) { $errors[] = "Datenbanktabelle {$table} fehlt; Migrationen ausführen."; } } $stmt = $pdo->prepare('SELECT COUNT(*) FROM schema_migrations WHERE version = ?'); $stmt->execute(['0030_contract_termination.sql']); if ((int)$stmt->fetchColumn() !== 1) { $errors[] = 'Migration 0030_contract_termination.sql ist nicht angewendet.'; } $unknownTenants = (int)$pdo->query("SELECT COUNT(*) FROM tenants WHERE customer_type = 'unknown'")->fetchColumn(); if ($unknownTenants > 0) { $warnings[] = "{$unknownTenants} bestehende Mandant(en) haben noch keinen Vertragstyp; vor kostenpflichtiger Buchung festlegen."; } } catch (Throwable $e) { $errors[] = 'Datenbankprüfung fehlgeschlagen: ' . $e->getMessage(); } foreach ($warnings as $warning) { echo "WARNUNG: {$warning}\n"; } if ($errors !== []) { foreach ($errors as $error) { echo "FEHLER: {$error}\n"; } echo "\nProduktionsfreigabe: NICHT BEREIT\n"; exit(1); } echo "Produktionsfreigabe: technische Pflichtprüfungen bestanden.\n";